Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #-------------------------------------------------------------------------------
- # ReCard Minigame
- # Script by: DrDhoom
- # Version: 1.1
- #-------------------------------------------------------------------------------
- # Achivements:
- # 1. First win
- # 2. Get Void!
- # 3. Get 5 card with same element!
- # 4. 5 win streak
- # 5. 10 win streak
- # 6. 15 win streak
- # 7. 1000 score!
- # 8. 5000 score!
- # 9. 10000 score!
- # 10. Win with maximum bet!
- #-------------------------------------------------------------------------------
- # Example call scene:
- # $scene = Scene_ReCard.new(player id, enemy id, background filename, BGM filename,
- # mode, debug)
- # $scene = Scene_ReCard.new(4,7,"re_background",'Battle7',0,false)
- #-------------------------------------------------------------------------------
- module Dhoom
- module ReCard
- Card = ['cf1', 'cf2', 'cf3', 'cf4', 'cf5', 'cw1', 'cw2', 'cw3', 'cw4', 'cw5',
- 'ca1', 'ca2', 'ca3', 'ca4', 'ca5', 'ce1', 'ce2', 'ce3', 'ce4', 'ce5',
- 'cvoid']
- Card_SE = 'Book'
- Day_SE = ['Fire3','Water2','Wind3','Earth4']
- Bet_Text = 'The Enemy bet for '
- Bet_Option = ['Bet Higher!','Okay. . .','Give Up']
- Finish_Option = ['Play Again','Exit']
- Mode_Option = ['Normal Mode', 'Sprint Mode']
- Sprint_Mode_Goal = [50,100,200,400,800,1000]
- Goal_Help_Text = "How much goal score?"
- Goal_Score_Text = "Goal Score"
- Goal_Score_Text_Font = "Impact"
- Sprint_Combo_Font = "Impact"
- Sprint_Combo_Color = Color.new(255,200,15)
- Sprint_Combo_Size = 56
- Crash_SE = 'Shot3'
- Win_ME = 'Victory1'
- Lose_ME = 'Gameover'
- Achivement_Text_Font = 'Freestyle Script'
- Achivement_Text_Size = 56
- Achivement_Text_Color = Color.new(231,155,53)
- Achivement_Get_Font = 'Arial'
- Achivement_Get_Size = 36
- Achivement_Get_Color = Color.new(255,234,0)
- Achivement_Get = []
- Achivement_Get[1] = 'First Win!'
- Achivement_Get[2] = 'Get Void!'
- Achivement_Get[3] = 'Get 5 card with same element!'
- Achivement_Get[4] = '5 win streak!'
- Achivement_Get[5] = '10 win streak!'
- Achivement_Get[6] = '15 win streak!'
- Achivement_Get[7] = '1000 score!'
- Achivement_Get[8] = '5000 score!'
- Achivement_Get[9] = '10000 score!'
- Achivement_Get[10] = 'Win with maximum bet!'
- Achivement_Text_Change_Delay = 60
- Var_Player_Score = 1
- Var_Enemy_Score = 2
- end
- end
- module Cache
- def self.recard(filename)
- load_bitmap("Graphics/ReCard/", filename)
- end
- end
- class Bitmap
- alias wora_outlinetxt_bmp_draw_text draw_text unless $@
- def draw_text(*args)
- case args.size
- when (2..3) # rect, str, [align]
- x, y, w, h, str, align =
- args[0].x, args[0].y, args[0].width, args[0].height, args[1],
- args[2].nil? ? 0 : args[2]
- else # x, y, w, h, str, [align]
- x, y, w, h, str, align =
- args[0], args[1], args[2], args[3], args[4],
- args[5].nil? ? 0 : args[5]
- end
- if $font_outline
- ori_color = self.font.color.clone
- self.font.color = $font_outline_color # Outline Color #
- wora_outlinetxt_bmp_draw_text(x-2, y, w, h, str, align)
- wora_outlinetxt_bmp_draw_text(x+2, y, w, h, str, align)
- wora_outlinetxt_bmp_draw_text(x, y-2, w, h, str, align)
- wora_outlinetxt_bmp_draw_text(x, y+2, w, h, str, align)
- self.font.color = ori_color
- end
- wora_outlinetxt_bmp_draw_text(x, y, w, h, str, align)
- end
- end
- #-------------------------------------------------------------------------------
- # * Window Base
- #-------------------------------------------------------------------------------
- class Window_Base < Window
- alias recard_win_base_dispose dispose
- def dispose
- return if self.disposed?
- recard_win_base_dispose
- end
- end
- #-------------------------------------------------------------------------------
- # * Window Report
- #-------------------------------------------------------------------------------
- class Window_Report < Window_Base
- def initialize(match, total_p_win, total_e_win, better, total_bet, winner, player_deck_ele, enemy_deck_ele, total_match, wpoint, xpoint)
- super(112,40,416,400)
- @match = match
- @total_p_win = total_p_win
- @total_e_win = total_e_win
- @better = better
- @total_bet = total_bet
- @winner = winner
- @player_deck_ele = player_deck_ele
- @enemy_deck_ele = enemy_deck_ele
- @total_match = total_match
- @wpoint = wpoint
- @xpoint = xpoint
- refresh
- end
- def recreate(match, total_p_win, total_e_win, better, total_bet, winner, player_deck_ele, enemy_deck_ele, total_match, wpoint, xpoint)
- @match = match
- @total_p_win = total_p_win
- @total_e_win = total_e_win
- @better = better
- @total_bet = total_bet
- @winner = winner
- @player_deck_ele = player_deck_ele
- @enemy_deck_ele = enemy_deck_ele
- @total_match = total_match
- @wpoint = wpoint
- @xpoint = xpoint
- refresh
- end
- def refresh
- self.contents.clear
- self.contents.draw_text(0,0,self.width-32,32,"Match Report",1)
- self.contents.draw_text(0,24,self.width-32,32,"Match #"+@match.to_s,1)
- self.contents.draw_text(0,48,self.width-32,32,"Winner : "+@winner,1)
- self.contents.draw_text(0,72,self.width-32,32,"Better : "+@better)
- self.contents.draw_text(0,72,self.width-32,32,"Total Bet : "+@total_bet.to_s,2)
- self.contents.draw_text(0,96,self.width-32,32,"Player Deck :")
- self.contents.draw_text(0,96,self.width-32,32,"Enemy Deck :",2)
- for i in 0..4
- i += 1
- bitmap = Cache.recard("thedayof")
- self.contents.blt(0,96+i*32,bitmap,Rect.new(0,32*i,96,32))
- self.contents.blt(220,96+i*32,bitmap,Rect.new(0,32*i,96,32))
- bitmap.dispose
- if @player_deck_ele[i] != nil
- self.contents.draw_text(96,96+i*32,self.width-32,32," : "+@player_deck_ele[i].to_s)
- else
- self.contents.draw_text(96,96+i*32,self.width-32,32," : 0")
- end
- if @enemy_deck_ele[i] != nil
- self.contents.draw_text(316,96+i*32,self.width-32,32," : "+@enemy_deck_ele[i].to_s)
- else
- self.contents.draw_text(316,96+i*32,self.width-32,32," : 0")
- end
- end
- self.contents.draw_text(0,284,self.width-32,32,"Total Win : "+@total_p_win.to_s)
- self.contents.draw_text(0,284,self.width-32,32,"Total Win : "+@total_e_win.to_s,2)
- if @wpoint != nil
- self.contents.draw_text(0,308,self.width-32,32,"You Gained "+@wpoint.to_s+" Point!",1)
- elsif @xpoint != nil
- self.contents.draw_text(0,308,self.width-32,32,"You Gained "+@xpoint.to_s+" Point!",1)
- end
- if @match > 1
- self.contents.draw_text(0,344,self.width-32,32,"<-- Back")
- end
- if @match < @total_match
- self.contents.draw_text(0,344,self.width-32,32,"Next -->",2)
- end
- end
- end
- #-------------------------------------------------------------------------------
- # * Scene ReCard
- #-------------------------------------------------------------------------------
- class Scene_ReCard < Scene_Base
- include Dhoom::ReCard
- def initialize(player_id = 1, cpu_id = 1, bg_filename = "re_background",
- bgm_filename = 'Battle7', mode = 0, debug = false)
- @enemy_id = cpu_id
- @actor_id = player_id
- @bg_filename = bg_filename
- @bgm_filename = bgm_filename
- @mode = mode if @mode.nil?
- @debug = debug
- end
- def start
- super
- init_value
- play_bgm
- create_graphic
- randomized_deck
- create_deck
- create_window
- end
- def init_value
- $recard_achivement = [] if $recard_achivement.nil?
- @get_achivement = []
- @win_streak = 0 if @win_streak.nil?
- @ach_delay = Achivement_Text_Change_Delay
- @match = 1 if @match.nil?
- @mp_win = [] if @mp_win.nil?
- @men_win = [] if @me_win.nil?
- @mh_bet = [] if @mh_bet.nil?
- @mbet = [] if @mbet.nil?
- @mwinner = [] if @mwinner.nil?
- @mpdeck_ele = [] if @mpdeck_ele.nil?
- @medeck_ele = [] if @medeck_ele.nil?
- @wpoint = [] if @wpoint.nil?
- @xpoint = [] if @xpoint.nil?
- @total_score = 0 if @total_score.nil? or @mode == 2
- @etotal_score = 0 if @etotal_score.nil? or @mode == 2
- @temp_ts_p = @total_score
- @temp_ts_e = @etotal_score
- @match_index = 1
- @animate_deck = false
- @an_deck = []
- @d_com = []
- @se_card = RPG::SE.new(Card_SE,80)
- @se_crash = RPG::SE.new(Crash_SE,80)
- @me_win = RPG::ME.new(Win_ME)
- @me_lose = RPG::ME.new(Lose_ME)
- @leader = ''
- @randomize_day = false
- @rand_day_count = 8
- @day_id = 0
- @tick = 20
- @tick2 = 60
- @fade_epsprite = true
- @round = 1
- @card_index = 0
- @ecard_index = 0
- @card_select = false
- @turn_now = ''
- @mv_done = []
- @mv_done[0] = false
- @mv_done[1] = false
- @p_win = 0
- @e_win = 0
- @sp_transition_duration = -1
- @sp_transition_dir = 0
- @sp_transition_buffer = nil
- @sp_transition_sprites = []
- @sp_transition_duration_max = -1
- @attemp = false
- @win_dur = -1
- @check = false
- @finished = false
- @current_pause = ''
- @combo = 0
- @last_combo = ''
- end
- def play_bgm
- @temp_bgm = RPG::BGM.last if @temp_bgm.nil?
- @bgm = RPG::BGM.new(@bgm_filename)
- @bgm.play
- end
- def create_graphic
- @bg = Sprite.new
- @bg.bitmap = Cache.picture(@bg_filename)
- @e_sprite = Sprite.new
- @e_sprite.bitmap = Cache.recard('00player')
- @e_sprite.src_rect.set(0,@enemy_id*140,400,140)
- @e_sprite.opacity = 0
- @e_sprite.x = 0
- @p_sprite = Sprite.new
- @p_sprite.bitmap = Cache.recard('00player')
- @p_sprite.src_rect.set(0,@actor_id*140,400,140)
- @p_sprite.x = 240
- @p_sprite.y = 340
- @p_sprite.mirror = true
- @p_sprite.opacity = 0
- @bgintf = Sprite.new
- @bgintf.bitmap = Cache.recard("pad")
- @bgintf.z = @p_sprite.z + 1
- @thedayof = Sprite.new
- @thedayof.bitmap = Cache.recard('thedayof')
- @thedayof.src_rect.set(0,0,96,32)
- @thedayof.x = 273
- @thedayof.y = 190
- @day = Sprite.new
- @day.bitmap = Cache.recard('thedayof')
- @day.src_rect.set(0,32,96,32)
- @day.x = 273
- @day.y = 222
- @day.visible = false
- @se_win = Sprite.new
- @se_win.bitmap = Cache.recard("enemywin")
- @se_win.ox = @se_win.width/2
- @se_win.oy = @se_win.height/2
- @se_win.x = 320
- @se_win.y = 208
- @se_win.z = @bg.z + 3
- @se_win.zoom_x = 0
- @se_win.visible = false
- @sp_win = Sprite.new
- @sp_win.bitmap = Cache.recard("playerwin")
- @sp_win.ox = @sp_win.width/2
- @sp_win.oy = @sp_win.height/2
- @sp_win.x = 320
- @sp_win.y = 208
- @sp_win.z = @bg.z + 3
- @sp_win.zoom_x = 0
- @sp_win.visible = false
- @score_p = Sprite.new
- @score_p.bitmap = Bitmap.new(128,32)
- @score_p.bitmap.font.size = 32
- @score_p.bitmap.draw_text(0,0,128,32,@total_score.to_s,2)
- @score_p.x = 486
- @score_p.y = 292
- @score_e = Sprite.new
- @score_e.bitmap = Bitmap.new(128,32)
- @score_e.bitmap.font.size = 32
- @score_e.bitmap.draw_text(0,0,128,32,@etotal_score.to_s)
- @score_e.x = 24
- @score_e.y = 157
- end
- def randomized_deck
- @p_deck = []
- @p_deck_ele = []
- @e_deck = []
- @e_deck_ele = []
- @picked_card = []
- loop do
- a = rand(21)
- if !@p_deck.include?(a) and !@picked_card.include?(a)
- @p_deck.push(a)
- if a < 5
- @p_deck_ele.push(1)
- elsif a < 10
- @p_deck_ele.push(2)
- elsif a < 15
- @p_deck_ele.push(3)
- elsif a < 20
- @p_deck_ele.push(4)
- else
- @p_deck_ele.push(5)
- if $recard_achivement[2].nil?
- $recard_achivement[2] = true
- @get_achivement.push(2)
- end
- end
- @picked_card.push(a)
- end
- if @p_deck.size == 5
- a = 0
- b = 0
- c = 0
- d = 0
- for i in 0..4
- case @p_deck_ele[i]
- when 1
- a += 1
- when 2
- b += 1
- when 3
- c += 1
- when 4
- d += 1
- end
- end
- if (a == 5 or b == 5 or c == 5 or d == 5) and $recard_achivement[3].nil?
- $recard_achivement[3] = true
- @get_achivement.push(3)
- end
- break
- end
- end
- loop do
- a = rand(21)
- if !@e_deck.include?(a) and !@picked_card.include?(a)
- @e_deck.push(a)
- if a < 5
- @e_deck_ele.push(1)
- elsif a < 10
- @e_deck_ele.push(2)
- elsif a < 15
- @e_deck_ele.push(3)
- elsif a < 20
- @e_deck_ele.push(4)
- else
- @e_deck_ele.push(5)
- end
- @picked_card.push(a)
- end
- if @e_deck.size == 5
- break
- end
- end
- @bet = 0
- @tmp_ele = []
- @tmp_ele[1] = 0
- @tmp_ele[2] = 0
- @tmp_ele[3] = 0
- @tmp_ele[4] = 0
- @tmp_ele[5] = 0
- for i in 0..4
- @tmp_ele[@e_deck_ele[i]] += 1
- @medeck_ele[@match] = [] if @medeck_ele[@match].nil?
- @medeck_ele[@match][@e_deck_ele[i]] = 0 if @medeck_ele[@match][@e_deck_ele[i]].nil?
- @medeck_ele[@match][@e_deck_ele[i]] += 1
- end
- for i in 0..4
- @mpdeck_ele[@match] = [] if @mpdeck_ele[@match].nil?
- @mpdeck_ele[@match][@p_deck_ele[i]] = 0 if @mpdeck_ele[@match][@p_deck_ele[i]].nil?
- @mpdeck_ele[@match][@p_deck_ele[i]] += 1
- end
- if @tmp_ele[1] == 2
- @bet += 1
- elsif @tmp_ele[1] >= 3
- @bet += 3
- end
- if @tmp_ele[2] >= 2
- @bet += 1
- elsif @tmp_ele[2] >= 3
- @bet += 3
- end
- if @tmp_ele[3] >= 2
- @bet += 1
- elsif @tmp_ele[3] >= 3
- @bet += 3
- end
- if @tmp_ele[4] >= 2
- @bet += 1
- elsif @tmp_ele[4] >= 3
- @bet += 3
- end
- if @tmp_ele[5] > 0
- @bet += 1
- end
- x = rand(2)+1
- @bet += x
- if @bet > 5
- @bet = 5
- end
- end
- def random_day
- @randomize_day = true
- if @rand_day_count > 0 and @tick <= 0
- @tick = 2*@rand_day_count
- @rand_day_count -= 1
- @se_card.play
- loop do
- a = rand(4)
- if a != @day_id
- @day_id = a
- for i in 0..4
- if i == a
- @re_deck[i].y = -40
- else
- @re_deck[i].y = -140
- end
- end
- break
- end
- end
- elsif @rand_day_count <= 0
- loop do
- if @tmp_ele[1] >= @tmp_ele[2] and @tmp_ele[1] >= @tmp_ele[3] and @tmp_ele[1] >= @tmp_ele[4]
- a = @e_deck_ele.index(1)
- elsif @tmp_ele[2] >= @tmp_ele[1] and @tmp_ele[2] >= @tmp_ele[3] and @tmp_ele[2] >= @tmp_ele[4]
- a = @e_deck_ele.index(2)
- elsif @tmp_ele[3] >= @tmp_ele[1] and @tmp_ele[3] >= @tmp_ele[2] and @tmp_ele[3] >= @tmp_ele[4]
- a = @e_deck_ele.index(3)
- elsif @tmp_ele[4] >= @tmp_ele[1] and @tmp_ele[4] >= @tmp_ele[2] and @tmp_ele[4] >= @tmp_ele[3]
- a = @e_deck_ele.index(4)
- else
- a = rand(5)
- end
- if a != @day_id or @e_deck_ele[a] != 5
- @day_id = @e_deck_ele[a]
- @ecard_index = a
- break
- end
- end
- @se_day = RPG::SE.new(Day_SE[@day_id-1],80)
- @se_day.play
- update_day_sprite
- @day.flash(Color.new(255,255,255),120)
- @randomize_day = false
- @xspeed = (@re_deck[@ecard_index].x - 360)/24
- if @xspeed < 0
- @xspeed = -@xspeed
- end
- @yspeed = (-40 - 150)/24
- if @yspeed < 0
- @yspeed = -@yspeed
- end
- @move_card = true
- end
- end
- def create_score_graphic
- @bet_sprite = Sprite.new
- @bet_sprite.bitmap = Cache.recard('number_bet')
- if @has_bet == 'player'
- @slash = Sprite.new
- @slash.bitmap = Cache.recard("numbslash")
- @slash.x = 544
- @slash.y = 343
- @bet_sprite.src_rect.set(64*@bet,0,64,64)
- @bet_sprite.x = 576
- @bet_sprite.y = 343
- else
- @slash = Sprite.new
- @slash.bitmap = Cache.recard("numbslash")
- @slash.x = 60
- @slash.y = 76
- @bet_sprite.src_rect.set(64*@bet,0,64,64)
- @bet_sprite.x = 92
- @bet_sprite.y = 76
- end
- update_score_text
- end
- def create_deck
- @rp_deck = []
- for i in 0..4
- @rp_deck[i] = Sprite.new
- @rp_deck[i].bitmap = Cache.recard(Card[@p_deck[i]])
- @rp_deck[i].x = 640
- @rp_deck[i].y = 340
- @rp_deck[i].z = @bg.z + 2
- end
- @re_deck = []
- for i in 0..4
- @re_deck[i] = Sprite.new
- if @debug
- @re_deck[i].bitmap = Cache.recard(Card[@e_deck[i]])
- else
- @re_deck[i].bitmap = Cache.recard('recard')
- end
- @re_deck[i].x = -120
- @re_deck[i].y = -40
- @re_deck[i].z = @bg.z + 2
- end
- @animate_deck = true
- end
- def create_window
- @help_window = Window_Base.new(160,158,320,64)
- @help_window.visible = false
- @bet_window = Window_Command.new(320, Bet_Option)
- @bet_window.x = 160
- @bet_window.y = 220
- @bet_window.visible = false
- @bet_window.active = false
- @finish_window = Window_Command.new(320, Finish_Option)
- @finish_window.x = 160
- @finish_window.y = 220
- @finish_window.visible = false
- @finish_window.active = false
- @choice_window = Window_Command.new(320,["Yes", "No"])
- @choice_window.x = 160
- @choice_window.y = 220
- @choice_window.visible = false
- @choice_window.active = false
- @goal_window = Window_Command.new(320,Sprint_Mode_Goal)
- @goal_window.x = 160
- @goal_window.y = (480-32*Sprint_Mode_Goal.size)/2
- @goal_window.active = false
- @goal_window.visible = false
- if @mode == 1
- @help_window.contents.draw_text(0,0,320-32,32,Bet_Text+@bet.to_s,1)
- elsif @mode == 2
- @help_window.contents.draw_text(0,0,320-32,32,Goal_Help_Text,1)
- @help_window.y = @goal_window.y - 64
- end
- if @mode == 0
- @mode_window = Window_Command.new(320, Mode_Option)
- @mode_window.x = 160
- @mode_window.y = 220
- @mode_window.visible = false
- @mode_window.active = false
- end
- end
- def update
- super
- @tick -= 1
- @bg.update
- @bgintf.update
- @thedayof.update
- @day.update
- for card in @rp_deck+@re_deck
- if card != nil and !card.disposed?
- card.update
- end
- end
- if @ach_text != nil
- @ach_flip = false if @ach_flip.nil?
- if !@ach_flip
- @ach_text.zoom_x += 0.005
- @ach_text.zoom_y += 0.005
- @ac_ach_text.zoom_x += 0.005
- @ac_ach_text.zoom_y += 0.005
- elsif @ach_flip
- @ach_text.zoom_x -= 0.005
- @ach_text.zoom_y -= 0.005
- @ac_ach_text.zoom_x -= 0.005
- @ac_ach_text.zoom_y -= 0.005
- end
- if @ach_text.zoom_x >= 1.2
- @ach_flip = true
- elsif @ach_text.zoom_x <= 1
- @ach_flip = false
- end
- end
- if @ac_ach_text != nil
- @ach_delay -= 1
- if @ach_delay <= 0
- update_achivement_text
- @ach_delay = Achivement_Text_Change_Delay
- end
- end
- if @temp_ts_p != @total_score
- @score_p.bitmap.clear
- @score_p.bitmap.draw_text(0,0,128,32,@total_score.to_s,2)
- @temp_ts_p = @total_score
- end
- if @temp_ts_e != @etotal_score
- @score_e.bitmap.clear
- @score_e.bitmap.draw_text(0,0,128,32,@etotal_score.to_s)
- @temp_ts_e = @etotal_score
- end
- @help_window.update
- @finish_window.update
- @delay -= 1 if @delay != nil
- update_ep_sprite if @fade_epsprite
- if @sp_transition_duration != -1
- update_splash
- end
- if !@shake.nil? and @shake != 4
- update_combo_shake
- end
- if @score_effect
- update_score_effect
- end
- if @win_dur != -1
- update_animate_text_win
- return
- elsif @finished
- @help_window.visible = true
- @finish_window.visible = true
- end
- if @report_window != nil
- @report_window.update
- update_report
- return
- end
- if @finish_window.active
- update_finish_selection
- return
- end
- if @sp_transition_duration <= 0 and !@finish_window.active and @check
- if @mode == 1
- if @has_bet == 'player'
- if @p_win >= @bet
- @me_win.play
- start_animate_text_win('player')
- wait(60)
- @t_winner = 'Player Win!'
- @mwinner[@match] = 'Player!'
- @wpoint[@match] = @p_win * 100
- @total_score += @p_win * 100
- @win_streak += 1
- check_for_achivement
- finish_match
- elsif @p_win + @e_win == 5 or @e_win > (5-@bet)
- @me_lose.play
- start_animate_text_win('enemy')
- wait(60)
- @t_winner = 'Enemy Win!'
- @mwinner[@match] = 'Enemy!'
- @etotal_score += @bet * 100
- @win_streak = 0
- finish_match
- end
- else
- if @e_win >= @bet
- @me_lose.play
- start_animate_text_win('enemy')
- wait(60)
- @t_winner = 'Enemy Win!'
- @mwinner[@match] = 'Enemy!'
- @etotal_score += @e_win * 100
- @win_streak = 0
- finish_match
- elsif @p_win + @e_win == 5 or @p_win > (5-@bet)
- @me_win.play
- start_animate_text_win('player')
- wait(60)
- @t_winner = 'Player Win!'
- @mwinner[@match] = 'Player!'
- @xpoint[@match] = @bet * 100
- @total_score += @bet * 100
- @win_streak += 1
- check_for_achivement
- finish_match
- end
- end
- elsif @mode == 2
- if @total_score >= @goal
- @me_win.play
- @t_winner = 'Player Win!'
- start_animate_text_win('player')
- wait(60)
- finish_match
- elsif @etotal_score >= @goal
- @me_lose.play
- @t_winner = 'Enemy Win!'
- start_animate_text_win('enemy')
- wait(60)
- finish_match
- end
- end
- @check = false
- elsif @animate_deck
- update_anim_deck
- return
- else
- if @choice_window.active
- @choice_window.update
- update_choice
- elsif !@mode_window.nil? and !@mode_window.disposed? and @mode_window.active
- @mode_window.update
- update_mode_selection
- elsif @goal_window.active
- @goal_window.update
- update_goal_selection
- elsif @bet_window.active
- @bet_window.update
- update_bet_window
- return
- elsif @randomize_day
- random_day
- return
- elsif @card_select
- @tick2 -= 1
- refresh_card_coordinate
- update_card_selection
- elsif @move_card
- move_selected_card
- end
- end
- end
- def draw_more_card
- for i in 0..4
- if @rp_deck[i].nil? or @rp_deck[i].disposed?
- @rp_deck.delete_at(i)
- @p_deck.delete_at(i)
- @p_deck_ele.delete_at(i)
- end
- if @re_deck[i].nil? or @re_deck[i].disposed?
- @re_deck.delete_at(i)
- @e_deck.delete_at(i)
- @e_deck_ele.delete_at(i)
- end
- end
- if @picked_card.size >= 20
- @picked_card = []
- for i in 0..4
- @picked_card.push(@p_deck[i])
- @picked_card.push(@e_deck[i])
- end
- @day_id = rand(4)
- @day_id += 1
- @se_day = RPG::SE.new(Day_SE[@day_id-1],80)
- @se_day.play
- update_day_sprite
- @day.flash(Color.new(255,255,255),120)
- end
- loop do
- a = rand(21)
- if !@p_deck.include?(a) and !@picked_card.include?(a)
- @p_deck.push(a)
- if a < 5
- @p_deck_ele.push(1)
- elsif a < 10
- @p_deck_ele.push(2)
- elsif a < 15
- @p_deck_ele.push(3)
- elsif a < 20
- @p_deck_ele.push(4)
- else
- @p_deck_ele.push(5)
- if $recard_achivement[2].nil?
- $recard_achivement[2] = true
- @get_achivement.push(2)
- end
- end
- @picked_card.push(a)
- end
- if @p_deck.size == 5
- a = 0
- b = 0
- c = 0
- d = 0
- for i in 0..4
- case @p_deck_ele[i]
- when 1
- a += 1
- when 2
- b += 1
- when 3
- c += 1
- when 4
- d += 1
- end
- end
- if (a == 5 or b == 5 or c == 5 or d == 5) and $recard_achivement[3].nil?
- $recard_achivement[3] = true
- @get_achivement.push(3)
- end
- break
- end
- end
- loop do
- a = rand(21)
- if !@e_deck.include?(a) and !@picked_card.include?(a)
- @e_deck.push(a)
- if a < 5
- @e_deck_ele.push(1)
- elsif a < 10
- @e_deck_ele.push(2)
- elsif a < 15
- @e_deck_ele.push(3)
- elsif a < 20
- @e_deck_ele.push(4)
- else
- @e_deck_ele.push(5)
- end
- @picked_card.push(a)
- end
- if @e_deck.size == 5
- break
- end
- end
- for i in 0..4
- if @rp_deck[i].nil?
- @rp_deck[i] = Sprite.new
- @rp_deck[i].bitmap = Cache.recard(Card[@p_deck[i]])
- @rp_deck[i].x = 640
- @rp_deck[i].y = 340
- @rp_deck[i].z = @bg.z + 2
- end
- if @re_deck[i].nil?
- @re_deck[i] = Sprite.new
- if @debug
- @re_deck[i].bitmap = Cache.recard(Card[@e_deck[i]])
- else
- @re_deck[i].bitmap = Cache.recard('recard')
- end
- @re_deck[i].x = -120
- @re_deck[i].y = -40
- @re_deck[i].z = @bg.z + 2
- end
- @re_deck[i].y = -140
- end
- for i in 0..4
- @rp_deck[i].x = i*120
- @re_deck[i].x = 640-(i*120)
- end
- end
- def finish_match
- @finished = true
- if @mode == 1
- save_current_match_report
- end
- @help_window.contents.clear
- @help_window.contents.draw_text(0,0,320-32,32,@t_winner,1)
- @help_window.y = @finish_window.y - 64
- @finish_window.active = true
- @bet_window.active = false
- $game_variables[Var_Player_Score] = @total_score
- $game_variables[Var_Enemy_Score] = @etotal_score
- return
- end
- def check_for_achivement
- if $recard_achivement[1].nil?
- $recard_achivement[1] = true
- @get_achivement.push(1)
- end
- if @bet == 5 and @has_bet == 'player' and $recard_achivement[10].nil?
- $recard_achivement[10] = true
- @get_achivement.push(10)
- end
- if @win_streak >= 5 and $recard_achivement[4].nil?
- $recard_achivement[4] = true
- @get_achivement.push(4)
- end
- if @win_streak >= 10 and $recard_achivement[5].nil?
- $recard_achivement[5] = true
- @get_achivement.push(5)
- end
- if @win_streak >= 15 and $recard_achivement[6].nil?
- $recard_achivement[6] = true
- @get_achivement.push(6)
- end
- if @total_score >= 1000 and $recard_achivement[7].nil?
- $recard_achivement[7] = true
- @get_achivement.push(7)
- end
- if @total_score >= 5000 and $recard_achivement[8].nil?
- $recard_achivement[8] = true
- @get_achivement.push(8)
- end
- if @total_score >= 10000 and $recard_achivement[9].nil?
- $recard_achivement[9] = true
- @get_achivement.push(9)
- end
- draw_achivement_text if @get_achivement.size != 0
- end
- def draw_achivement_text
- @ach_index = 0
- @ach_text = Sprite.new
- @ach_text.bitmap = Bitmap.new(320,Achivement_Text_Size)
- @ach_text.bitmap.font = Font.new(Achivement_Text_Font,Achivement_Text_Size)
- @ach_text.bitmap.font.color = Achivement_Text_Color
- @ach_text.bitmap.draw_text(0,0,320,Achivement_Text_Size,"Achivement!",1)
- @ach_text.ox = 320/2
- @ach_text.oy = Achivement_Text_Size/2
- @ach_text.x = 150
- @ach_text.y = 138
- @ach_text.angle = 23
- @ach_text.z = @finish_window.z + 1
- @ac_ach_text = Sprite.new
- @ac_ach_text.bitmap = Bitmap.new(320,Achivement_Get_Size)
- @ac_ach_text.bitmap.font = Font.new(Achivement_Get_Font,Achivement_Get_Size)
- @ac_ach_text.bitmap.font.color = Achivement_Get_Color
- @ac_ach_text.bitmap.draw_text(0,0,320,Achivement_Get_Size,Achivement_Get[@get_achivement[@ach_index]],1)
- @ac_ach_text.ox = 320/2
- @ac_ach_text.oy = Achivement_Get_Size/2
- @ac_ach_text.x = 165
- @ac_ach_text.y = 146+(Achivement_Get_Size/2)
- @ac_ach_text.angle = 23
- @ac_ach_text.z = @finish_window.z + 1
- end
- def start_sprint_match
- @day_id = rand(4)
- @day_id += 1
- @se_day = RPG::SE.new(Day_SE[@day_id-1],80)
- @se_day.play
- update_day_sprite
- @day.flash(Color.new(255,255,255),120)
- random = rand(2)
- case random
- when 0
- @leader = 'player'
- @turn_now = 'player'
- when 1
- @leader = 'enemy'
- @turn_now = 'enemy'
- end
- @ef_p_score = Sprite.new
- @ef_p_score.bitmap = Bitmap.new(85,32)
- @ef_p_score.x = 555
- @ef_p_score.y = 278
- @ef_p_score.z = @score_p.z+1
- @ef_e_score = Sprite.new
- @ef_e_score.bitmap = Bitmap.new(85,32)
- @ef_e_score.x = 0
- @ef_e_score.y = 171
- @ef_e_score.z = @score_e.z+1
- start_card_selection
- return
- end
- def update_goal_selection
- if Input.trigger?(Input::C)
- Sound.play_decision
- @goal = Sprint_Mode_Goal[@goal_window.index]
- @goal_score = Sprite.new
- @goal_score.bitmap = Bitmap.new(77,48)
- @goal_score.bitmap.font = Font.new(Goal_Score_Text_Font)
- @goal_score.bitmap.font.size = 24
- @goal_score.bitmap.font.color = Color.new(0,0,0)
- @goal_score.bitmap.font.shadow = false
- @goal_score.x = 282
- @goal_score.y = 260
- $font_outline_color = Color.new(255,255,255)
- $font_outline = true
- @goal_score.bitmap.draw_text(0,0,77,32,Goal_Score_Text,1)
- @goal_score.bitmap.draw_text(0,18,77,32,@goal.to_s,1)
- $font_outline = false
- @goal_window.visible = false
- @goal_window.active = false
- @mode = 2
- @help_window.visible = false
- start_sprint_match
- elsif Input.trigger?(Input::B)
- Sound.play_cancel
- @goal_window.visible = false
- @goal_window.active = false
- @help_window.visible = false
- @mode_window.visible = true
- @mode_window.active = true
- return
- end
- end
- def update_achivement_text
- return if @get_achivement.size == 1
- if @ach_index < @get_achivement.size-1
- @ach_index += 1
- else
- @ach_index = 0
- end
- @ac_ach_text.bitmap.clear
- @ac_ach_text.bitmap.draw_text(0,0,320,Achivement_Get_Size,Achivement_Get[@get_achivement[@ach_index]],1)
- end
- def update_finish_selection
- if Input.trigger?(Input::C)
- case @finish_window.index
- when 0
- Sound.play_decision
- RPG::ME.stop
- @match += 1
- terminate
- start
- return
- when 1
- Sound.play_decision
- @finish_window.visible = false
- @finish_window.active = false
- @help_window.visible = false
- if @mode != 2
- @report_window = Window_Report.new(@match_index, @mp_win[@match_index], @men_win[@match_index], @mh_bet[@match_index], @mbet[@match_index], @mwinner[@match_index], @mpdeck_ele[@match_index], @medeck_ele[@match_index],@match,@wpoint[@match_index],@xpoint[@match_index])
- else
- Sound.play_decision
- @temp_bgm.play
- $scene = Scene_Map.new
- end
- return
- end
- end
- end
- def update_report
- if Input.trigger?(Input::LEFT)
- if @match_index > 1
- Sound.play_cursor
- @match_index -= 1
- recreate_report_window
- end
- elsif Input.trigger?(Input::RIGHT)
- if @match_index < @match
- Sound.play_cursor
- @match_index += 1
- recreate_report_window
- end
- elsif Input.trigger?(Input::B) or Input.trigger?(Input::C)
- Sound.play_decision
- @temp_bgm.play
- $scene = Scene_Map.new
- end
- end
- def recreate_report_window
- @report_window.recreate(@match_index, @mp_win[@match_index], @men_win[@match_index], @mh_bet[@match_index], @mbet[@match_index], @mwinner[@match_index], @mpdeck_ele[@match_index], @medeck_ele[@match_index],@match,@wpoint[@match_index],@xpoint[@match_index])
- end
- def save_current_match_report
- @mp_win[@match] = @p_win
- @men_win[@match] = @e_win
- @mh_bet[@match] = @has_bet
- @mbet[@match] = @bet
- end
- def update_anim_deck
- for i in 0..4
- if !@an_deck.include?(i)
- if @rp_deck[i].x > i*120
- @rp_deck[i].x -= 12
- elsif @rp_deck[i].x < i*120
- @rp_deck[i].x = i*120
- end
- if @rp_deck[i].x == i*120
- @se_card.play
- @an_deck.push(i)
- @an_deck.uniq!
- end
- end
- end
- for i in 5..9
- if !@an_deck.include?(i)
- a = i-5
- if @re_deck[a].x < 640-((i-4)*120)
- @re_deck[a].x += 12
- elsif @re_deck[a].x > 640-((i-4)*120)
- @re_deck[a].x = 640-((i-4)*120)
- end
- if @re_deck[a].x == 640-((i-4)*120)
- @se_card.play
- @an_deck.push(i)
- @an_deck.uniq!
- end
- end
- end
- if @an_deck.size == 10 and @delay.nil?
- @delay = 60
- end
- @d_com = []
- if @an_deck.size == 10 and @delay <= 0
- for a in 0..4
- if @rp_deck[a].y < 440
- @rp_deck[a].y += 6
- elsif @rp_deck[a].y > 440
- @rp_deck[a].y = 440
- @se_card.play
- @d_com.push(a) if !@d_com.include?(a)
- end
- if @re_deck[a].y > -140
- @re_deck[a].y -= 6
- elsif @re_deck[a].y < -140
- @re_deck[a].y = -140
- @se_card.play
- @d_com.push(a+5) if !@d_com.include?(a+5)
- end
- end
- end
- if @d_com.size == 10
- @animate_deck = false
- if @mode == 0
- if !@mode_window.nil? and !@mode_window.disposed?
- @mode_window.visible = true
- @mode_window.active = true
- end
- elsif @mode == 1
- @help_window.visible = true
- @bet_window.visible = true
- @bet_window.active = true
- elsif @mode == 2
- @help_window.visible = true
- @goal_window.visible = true
- @goal_window.active = true
- end
- end
- end
- def update_mode_selection
- if Input.trigger?(Input::C)
- Sound.play_decision
- @mode_window.active = false
- @mode_window.visible = false
- case @mode_window.index
- when 0
- @mode = 1
- @help_window.contents.clear
- @help_window.contents.draw_text(0,0,320-32,32,Bet_Text+@bet.to_s,1)
- @help_window.y = 158
- @help_window.visible = true
- @bet_window.active = true
- @bet_window.visible = true
- when 1
- @mode = 2
- @help_window.contents.clear
- @help_window.contents.draw_text(0,0,320-32,32,Goal_Help_Text,1)
- @help_window.y = @goal_window.y - 64
- @help_window.visible = true
- @goal_window.visible = true
- @goal_window.active = true
- end
- elsif Input.trigger?(Input::B)
- @current_pause = 'mode'
- @mode_window.visible = false
- Sound.play_decision
- @bgm = RPG::BGM.new(@bgm_filename,0)
- @bgm.play
- @help_window.contents.clear
- @help_window.contents.draw_text(0,0,320-32,32,"Exit?",1)
- @help_window.visible = true
- @choice_window.visible = true
- @choice_window.active = true
- return
- end
- end
- def update_bet_window
- if Input.trigger?(Input::C)
- case @bet_window.index
- when 0
- if @bet == 5
- Sound.play_buzzer
- return
- else
- @e_sprite.opacity = 128
- @has_bet = 'player'
- @leader = 'player'
- @turn_now = 'player'
- Sound.play_decision
- @bet += 1
- @bet_window.active = false
- @bet_window.visible = false
- @help_window.visible = false
- create_score_graphic
- start_card_selection
- return
- end
- when 1
- random_day
- @has_bet = 'enemy'
- @leader = 'enemy'
- @turn_now = 'enemy'
- @p_sprite.opacity = 128
- Sound.play_decision
- @bet_window.active = false
- @bet_window.visible = false
- @help_window.visible = false
- create_score_graphic
- return
- when 2
- Sound.play_decision
- @temp_bgm.play
- $scene = Scene_Map.new
- end
- end
- end
- def update_day_sprite
- @day.dispose
- @day = Sprite.new
- @day.bitmap = Cache.recard('thedayof')
- @day.src_rect.set(0,@day_id*32,96,32)
- @day.x = 273
- @day.y = 222
- end
- def update_score_text
- if @mode == 1
- @te.dispose if @te != nil
- @te = Sprite.new
- @te.bitmap = Cache.recard("number_win")
- @te.src_rect.set(@e_win*64,0,64,64)
- @te.x = 0
- @te.y = 76
- @te.z = @bg.z + 1
- @tp.dispose if @tp != nil
- @tp = Sprite.new
- @tp.bitmap = Cache.recard("number_win")
- @tp.src_rect.set(@p_win*64,0,64,64)
- @tp.z = @bg.z + 1
- if @has_bet == 'player'
- @tp.x = 484
- @tp.y = 343
- else
- @tp.x = 576
- @tp.y = 343
- end
- elsif @mode == 2
- if @combo_sprite.nil? or @combo_sprite.disposed?
- @combo_sprite = Sprite.new
- @combo_sprite.bitmap = Bitmap.new(640,480)
- @combo_sprite.bitmap.font = Font.new(Sprint_Combo_Font)
- @combo_sprite.bitmap.font.size = Sprint_Combo_Size
- @combo_sprite.bitmap.font.color = Sprint_Combo_Color
- @combo_sprite.bitmap.font.shadow = false
- @combo_sprite.x = 0
- @combo_sprite.y = 0
- @combo_sprite.z = @bg.z + 1
- @combo_sprite.visible = false
- end
- if @combo > 0
- @combo_sprite.visible = true
- else
- @combo_sprite.visible = false
- end
- if @last_combo == 'player'
- @combo_sprite.bitmap.clear
- $font_outline = true
- $font_outline_color = Color.new(0,0,0)
- @combo_sprite.bitmap.draw_text(576,343,640,Sprint_Combo_Size,'+ '+@combo.to_s)
- $font_outline = false
- elsif @last_combo == 'enemy'
- @combo_sprite.bitmap.clear
- $font_outline = true
- $font_outline_color = Color.new(0,0,0)
- @combo_sprite.bitmap.draw_text(32,76,640,Sprint_Combo_Size,'+ '+@combo.to_s)
- $font_outline = false
- end
- @shake = 0
- end
- end
- def update_combo_shake
- if @shake == 0
- @combo_sprite.x += 2
- if @combo_sprite.x == 6
- @shake = 1
- end
- elsif @shake == 1
- @combo_sprite.x -= 2
- if @combo_sprite.x == 0
- @shake = 2
- end
- elsif @shake == 2
- @combo_sprite.x -= 2
- if @combo_sprite.x == -6
- @shake = 3
- end
- elsif @shake == 3
- @combo_sprite.x += 2
- if @combo_sprite.x == 0
- @shake = 4
- end
- end
- end
- def init_score_effect(target,score)
- case target
- when 'player'
- @ef_p_score.x = 555
- @ef_p_score.y = 278
- @ef_p_score.bitmap.clear
- @ef_p_score.bitmap.draw_text(0,0,85,32,'+'+score.to_s,1)
- @ef_p_score.opacity = 255
- when 'enemy'
- @ef_e_score.x = 0
- @ef_e_score.y = 171
- @ef_e_score.bitmap.clear
- @ef_e_score.bitmap.draw_text(0,0,85,32,'+'+score.to_s,1)
- @ef_e_score.opacity = 255
- end
- @score_effect = true
- end
- def update_score_effect
- if @mode == 2
- if @ef_p_score.y > 257
- @ef_p_score.y -= 2
- end
- if @ef_p_score.opacity > 0
- @ef_p_score.opacity -= 3
- end
- if @ef_e_score.y < 193
- @ef_e_score.y += 2
- end
- if @ef_e_score.opacity > 0
- @ef_e_score.opacity -= 3
- end
- if @ef_p_score.y <= 257 and @ef_p_score.opacity == 0 and @ef_e_score.y >= 193 and @ef_e_score.opacity == 0
- @score_effect = false
- end
- end
- end
- def update_choice
- if Input.trigger?(Input::B)
- Sound.play_cancel
- @bgm = RPG::BGM.new(@bgm_filename)
- @bgm.play
- @help_window.visible = false
- @choice_window.active = false
- @choice_window.visible = false
- if @current_pause == 'mode'
- @mode_window.visible = true
- end
- return
- elsif Input.trigger?(Input::C)
- case @choice_window.index
- when 0
- Sound.play_decision
- @temp_bgm.play
- $scene = Scene_Map.new
- when 1
- Sound.play_cancel
- @bgm = RPG::BGM.new(@bgm_filename)
- @bgm.play
- @help_window.visible = false
- @choice_window.active = false
- @choice_window.visible = false
- if @current_pause == 'mode'
- @mode_window.visible = true
- end
- return
- end
- end
- end
- def start_card_selection
- @card_select = true
- if @turn_now == 'player'
- @rp_deck[@card_index].y = 340
- else
- @re_deck[@ecard_index].y = -40
- end
- end
- def update_card_selection
- if @turn_now == 'player'
- if Input.trigger?(Input::RIGHT)
- if @card_index < 4
- @card_index += 1
- loop do
- if @rp_deck[@card_index] == nil or @rp_deck[@card_index].disposed?
- if @card_index < 4
- @card_index += 1
- else
- @card_index = 0
- end
- else
- break
- end
- end
- @se_card.play
- else
- @card_index = 0
- loop do
- if !@rp_deck[@card_index].disposed?
- break
- else
- @card_index += 1
- end
- end
- @se_card.play
- end
- elsif Input.trigger?(Input::LEFT)
- if @card_index > 0
- @card_index -= 1
- loop do
- if @rp_deck[@card_index] == nil or @rp_deck[@card_index].disposed?
- if @card_index > 0
- @card_index -= 1
- else
- @card_index = 4
- end
- else
- break
- end
- end
- @se_card.play
- else
- @card_index = 4
- loop do
- if !@rp_deck[@card_index].disposed?
- break
- else
- @card_index -= 1
- end
- end
- @se_card.play
- end
- elsif Input.trigger?(Input::C)
- if @day_id == 0
- @day_id = @p_deck_ele[@card_index]
- @se_day = RPG::SE.new(Day_SE[@day_id-1],80)
- @se_day.play
- @day.visible = true
- update_day_sprite
- @rp_deck[@card_index].flash(Color.new(255,255,255),32)
- prepare_move_card
- else
- ele = @p_deck_ele[@card_index]
- if @leader == 'player'
- if @p_deck_ele[@card_index] != 5
- @se_day = RPG::SE.new(Day_SE[@p_deck_ele[@card_index]-1],80)
- @se_day.play
- end
- @day.visible = true
- update_day_sprite
- @rp_deck[@card_index].flash(Color.new(255,255,255),32)
- prepare_move_card
- elsif @p_deck_ele.include?(@e_deck_ele[@ecard_index]) or @p_deck_ele.include?(@day_id)
- in_deck = 0
- for i in 0..4
- if @p_deck_ele[i] == @e_deck_ele[@ecard_index] or @p_deck_ele[i] == @day_id
- if !@rp_deck[i].disposed?
- in_deck += 1
- end
- end
- end
- if in_deck != 0
- if ele == @e_deck_ele[@ecard_index] or ele == @day_id or ele == 5
- if @p_deck_ele[@card_index] != 5
- @se_day = RPG::SE.new(Day_SE[@p_deck_ele[@card_index]-1],80)
- @se_day.play
- end
- @rp_deck[@card_index].flash(Color.new(255,255,255),32)
- prepare_move_card
- else
- Sound.play_buzzer
- end
- else
- @se_day = RPG::SE.new(Day_SE[@p_deck_ele[@card_index]-1],80)
- @se_day.play
- @rp_deck[@card_index].flash(Color.new(255,255,255),32)
- prepare_move_card
- end
- else
- if @p_deck_ele[@card_index] != 5
- @se_day = RPG::SE.new(Day_SE[@p_deck_ele[@card_index]-1],80)
- @se_day.play
- end
- @rp_deck[@card_index].flash(Color.new(255,255,255),32)
- prepare_move_card
- end
- end
- elsif Input.trigger?(Input::B)
- @current_pause = 'card_selection'
- Sound.play_decision
- @bgm = RPG::BGM.new(@bgm_filename,0)
- @bgm.play
- @help_window.contents.clear
- @help_window.contents.draw_text(0,0,320-32,32,"Exit?",1)
- @help_window.visible = true
- @choice_window.visible = true
- @choice_window.active = true
- return
- end
- else
- if @leader != 'enemy'
- @attemp = false
- loop do
- if !@attemp
- @attemp = true
- @e_temp_card = []
- if @e_deck_ele.include?(@p_deck_ele[@card_index])
- for i in 0..4
- if @e_deck_ele[i] == @p_deck_ele[@card_index] and !@re_deck[i].disposed?
- @e_temp_card.push(@e_deck[i])
- end
- end
- @e_temp_card.sort!
- if !@e_temp_card.nil?
- a = @p_deck[@card_index]
- c = nil
- for i in 0...@e_temp_card.size
- b = @e_temp_card[i]
- if b > a and c.nil?
- c = @e_deck.index(b)
- end
- end
- if !c.nil?
- @ecard_index = @e_deck.index(c)
- else
- if @e_deck_ele.include?(@day_id) and !@re_deck[@e_deck_ele.index(@day_id)].disposed?
- @ecard_index = @e_deck_ele.index(@day_id)
- else
- @ecard_index = @e_deck.index(@e_temp_card[0])
- end
- end
- else
- if @e_deck_ele.include?(@day_id) and !@re_deck[@e_deck_ele.index(@day_id)].disposed?
- @ecard_index = @e_deck_ele.index(@day_id)
- elsif @e_deck.include?(20) and !@re_deck[@e_deck.index(20)].disposed?
- @ecard_index = @e_deck.index(20)
- else
- @attemp = true
- end
- end
- elsif @e_deck_ele.include?(@day_id) and !@re_deck[@e_deck_ele.index(@day_id)].disposed?
- @ecard_index = @e_deck_ele.index(@day_id)
- elsif @e_deck.include?(20) and !@re_deck[@e_deck.index(20)].disposed?
- @ecard_index = @e_deck.index(20)
- else
- @attemp = true
- end
- if @ecard_index != nil and !@re_deck[@ecard_index].nil? and !@re_deck[@ecard_index].disposed?
- break
- end
- else
- loop do
- @ecard_index = rand(5)
- if !@re_deck[@ecard_index].disposed? and !@re_deck[@ecard_index].nil?
- break
- end
- end
- break
- end
- end
- prepare_move_card
- else
- if @mode == 1
- loop do
- size = 0
- for i in 0..4
- if !@re_deck[i].disposed?
- size += 1
- end
- end
- a = rand(5)
- if !@re_deck[a].disposed?
- if @e_deck[a] == 20 and size == 1
- @ecard_index = a
- break
- elsif @e_deck[a] != 20
- @ecard_index = a
- break
- end
- end
- end
- elsif @mode == 2
- temp_deck = []
- void = -1
- for i in 0..4
- if @e_deck_ele[i] == @day_id
- temp_deck.push(@e_deck[i])
- end
- if @e_deck_ele[i] == 5
- void = i
- end
- end
- temp_deck.sort!
- if temp_deck.size != 0
- @ecard_index = @e_deck.index(temp_deck[temp_deck.size-1])
- elsif void != -1
- @ecard_index = void
- else
- loop do
- a = rand(5)
- if !@re_deck[a].disposed?
- @ecard_index = a
- break
- end
- end
- end
- end
- prepare_move_card
- end
- end
- end
- def move_selected_card
- for i in 0..4
- if i != @ecard_index
- @re_deck[i].y = -140 if !@re_deck[i].disposed?
- end
- if i != @card_index
- @rp_deck[i].y = 440 if !@rp_deck[i].disposed?
- end
- end
- if @mv_done[0] and @mv_done[1]
- @mv_done[0] = false
- @mv_done[1] = false
- @move_card = false
- if @turn_now == 'enemy'
- @re_deck[@ecard_index].bitmap = Cache.recard(Card[@e_deck[@ecard_index]])
- end
- if @leader == @turn_now
- next_turn
- else
- calculate
- @check = true
- end
- return
- end
- if @turn_now == 'player'
- if (@rp_deck[@card_index].x > 160-(@xspeed-1) and @rp_deck[@card_index].x < 160) or (@rp_deck[@card_index].x < 160+(@xspeed-1) and @rp_deck[@card_index].x > 160)
- @rp_deck[@card_index].x = 160
- elsif @rp_deck[@card_index].x < 160
- @rp_deck[@card_index].x += @xspeed
- elsif @rp_deck[@card_index].x > 160
- @rp_deck[@card_index].x -= @xspeed
- elsif @rp_deck[@card_index].x == 160
- @mv_done[0] = true
- end
- if (@rp_deck[@card_index].y > 150-(@yspeed-1) and @rp_deck[@card_index].y < 150) or (@rp_deck[@card_index].y < 150+(@yspeed-1) and @rp_deck[@card_index].y > 150)
- @rp_deck[@card_index].y = 150
- elsif @rp_deck[@card_index].y < 150
- @rp_deck[@card_index].y += @yspeed
- elsif @rp_deck[@card_index].y > 150
- @rp_deck[@card_index].y -= @yspeed
- elsif @rp_deck[@card_index].y == 150
- @mv_done[1] = true
- end
- elsif @turn_now == 'enemy'
- if (@re_deck[@ecard_index].x > 360-(@xspeed-1) and @re_deck[@ecard_index].x < 360) or (@re_deck[@ecard_index].x < 360+(@xspeed-1) and @re_deck[@ecard_index].x > 360)
- @re_deck[@ecard_index].x = 360
- elsif @re_deck[@ecard_index].x < 360
- @re_deck[@ecard_index].x += @xspeed
- elsif @re_deck[@ecard_index].x > 360
- @re_deck[@ecard_index].x -= @xspeed
- elsif @re_deck[@ecard_index].x == 360
- @mv_done[0] = true
- end
- if (@re_deck[@ecard_index].y > 150-(@yspeed-1) and @re_deck[@ecard_index].y < 150) or (@re_deck[@ecard_index].y < 150+(@yspeed-1) and @re_deck[@ecard_index].y > 150)
- @re_deck[@ecard_index].y = 150
- elsif @re_deck[@ecard_index].y < 150
- @re_deck[@ecard_index].y += @yspeed
- elsif @re_deck[@ecard_index].y > 150
- @re_deck[@ecard_index].y -= @yspeed
- elsif @re_deck[@ecard_index].y == 150
- @mv_done[1] = true
- end
- end
- end
- def refresh_card_x
- init = 0
- for i in 0..4
- if !@rp_deck[i].nil? and !@rp_deck[i].disposed?
- @rp_deck[i].x = init * 120
- init += 1
- end
- end
- init = 0
- for i in 0..4
- if !@re_deck[i].nil? and !@re_deck[i].disposed?
- @re_deck[i].x = 640-((init+1)*120)
- init += 1
- end
- end
- end
- def next_turn
- if @turn_now == 'player'
- @turn_now = 'enemy'
- elsif @turn_now == 'enemy'
- @turn_now = 'player'
- end
- start_card_selection
- end
- def calculate
- loop do
- a = @e_deck[@ecard_index]
- b = @p_deck[@card_index]
- case @leader
- when 'enemy'
- e = @e_deck_ele[@ecard_index]
- when 'player'
- e = @p_deck_ele[@card_index]
- end
- if @e_deck_ele[@ecard_index] == @p_deck_ele[@card_index] or (@e_deck_ele[@ecard_index] == @day_id and @p_deck_ele[@card_index] == @day_id)
- if a > b
- @winner = 'enemy'
- elsif b > a
- @winner = 'player'
- end
- elsif @e_deck[@ecard_index] == 20
- @winner = 'enemy'
- elsif @p_deck[@card_index] == 20
- @winner = 'player'
- elsif @e_deck_ele[@ecard_index] == @day_id and @p_deck_ele[@card_index] != @day_id
- @winner = 'enemy'
- elsif @e_deck_ele[@ecard_index] != @day_id and @p_deck_ele[@card_index] == @day_id
- @winner = 'player'
- elsif @e_deck_ele[@ecard_index] == e and @p_deck_ele[@card_index] != e
- @winner = 'enemy'
- elsif @e_deck_ele[@ecard_index] != e and @p_deck_ele[@card_index] == e
- @winner = 'player'
- end
- if @winner != nil
- @leader = @winner
- @turn_now = @winner
- if @winner == 'player'
- @p_win += 1
- if @mode == 2
- @total_score += 10
- plus = 10
- if @last_combo == 'player'
- @combo += 1
- @total_score += @combo
- plus += @combo
- else
- @last_combo = 'player'
- @combo = 0
- end
- init_score_effect('player',plus)
- end
- update_score_text
- @tick = 60
- @rp_deck[@card_index].flash(Color.new(255,255,255),60)
- wait(60)
- @se_crash.play
- init_splash(@re_deck[@ecard_index])
- else
- @e_win += 1
- if @mode == 2
- @etotal_score += 10
- plus = 10
- if @last_combo == 'enemy'
- @combo += 1
- @etotal_score += @combo
- plus += @combo
- else
- @last_combo = 'enemy'
- @combo = 0
- end
- init_score_effect('enemy',plus)
- end
- update_score_text
- @tick = 60
- @re_deck[@ecard_index].flash(Color.new(255,255,255),60)
- wait(60)
- @se_crash.play
- init_splash(@rp_deck[@card_index])
- end
- @winner = nil
- break
- end
- end
- end
- def wait(duration)
- for i in 0...duration
- Graphics.update
- update_combo_shake
- update_score_effect
- for card in @rp_deck+@re_deck
- if card != nil and !card.disposed?
- card.update
- end
- end
- break if i >= duration / 2
- end
- end
- def start_animate_text_win(winner)
- @win_dur = 60
- @w_win = winner
- case @w_win
- when 'player'
- @sp_win.visible = true
- when 'enemy'
- @se_win.visible = true
- end
- end
- def update_animate_text_win
- @win_dur -= 1
- case @w_win
- when 'player'
- if @win_dur > 40
- if @sp_win.zoom_x < 1
- @sp_win.zoom_x += 0.05
- end
- elsif @win_dur < 20
- if @sp_win.zoom_x > 0
- @sp_win.zoom_x -= 0.05
- end
- end
- if @win_dur == 0
- @win_dur = -1
- @sp_win.visible = false
- end
- when 'enemy'
- if @win_dur > 40
- if @se_win.zoom_x < 1
- @se_win.zoom_x += 0.05
- end
- elsif @win_dur < 20
- if @se_win.zoom_x > 0
- @se_win.zoom_x -= 0.05
- end
- end
- if @win_dur <= 0
- @win_dur = -1
- @se_win.visible = false
- end
- end
- end
- def prepare_move_card
- if @turn_now == 'player'
- @xspeed = (@rp_deck[@card_index].x - 160)/24
- if @xspeed < 0
- @xspeed = -@xspeed
- end
- @yspeed = (340 - 150)/24
- if @yspeed < 0
- @yspeed = -@yspeed
- end
- else
- @xspeed = (@re_deck[@ecard_index].x - 360)/24
- if @xspeed < 0
- @xspeed = -@xspeed
- end
- @yspeed = (-40 - 150)/24
- if @yspeed < 0
- @yspeed = -@yspeed
- end
- end
- @card_select = false
- @move_card = true
- end
- def refresh_card_coordinate
- for i in 0..4
- if i == @card_index and !@rp_deck[i].disposed?
- if @rp_deck[i].y > 340
- @rp_deck[i].y -= 8
- if @rp_deck[i].y < 340
- @rp_deck[i].y = 340
- end
- end
- elsif !@rp_deck[i].disposed?
- if @rp_deck[i].y < 440
- @rp_deck[i].y += 8
- if @rp_deck[i].y > 440
- @rp_deck[i].y = 440
- end
- end
- end
- end
- end
- def update_ep_sprite
- @e_sprite.opacity += 4
- @p_sprite.opacity += 4
- if @e_sprite.opacity == 255 and @p_sprite.opacity == 255
- @fade_epsprite = false
- end
- end
- def init_splash(source)
- @source = source
- @sp_transition_duration = 60
- @splash_dir = []
- @splash_angle = []
- size = 6
- hsize = size / 2
- cells = 21600 / (size ** 2)
- cols = 120 / size
- rect = Rect.new(0, 0, size, size)
- cells.times { |i|
- rect.x = i % cols * size
- rect.y = i / cols * size
- sprite = create_special_transition_sprite(rect)
- sprite.bitmap.blt(0, 0, @source.bitmap, rect)
- sprite.x += (hsize + @source.x)
- sprite.y += (hsize + @source.y)
- sprite.ox = sprite.oy = hsize
- @sp_transition_sprites << sprite
- x = rect.x / size
- y = rect.y / size
- @splash_dir[i] = calc_splash_move_direction(x, y, cells, cols)
- @splash_angle[i] = rand(24) - 12
- }
- @source.dispose
- end
- def pmrand
- return (rand(2) == 0 ? 1 : -1)
- end
- def create_special_transition_sprite(rect)
- sprite = Sprite.new
- sprite.bitmap = Bitmap.new(rect.width, rect.height)
- sprite.x = rect.x
- sprite.y = rect.y
- sprite.z = 20000
- return sprite
- end
- def calc_splash_move_direction(x, y, cells, cols)
- vague = 7.2
- vx = vy = 0
- case @sp_transition_dir
- when 0
- x -= cols >> 1
- y -= (cells / cols) >> 1
- r = Math.sqrt(x ** 2 + y ** 2) / vague
- if r != 0
- vx = x / r
- vy = y / r
- else
- vx = ( x != 0 ? (x * 1.5) : (pmrand * vague) )
- vy = ( y != 0 ? (y * 1.5) : (pmrand * vague) )
- end
- vx += (rand - 0.5) * vague
- vy += (rand - 0.5) * vague
- when 2
- rows = cells / cols
- vx = (rand(50) - 25) / 10.0
- vy = 1 + vague * (rows - y) / rows * (1.0 + rand / 5.0)
- when 4
- vx = -1 - vague * (x + 1) / cols * (1.0 + rand / 5.0)
- vy = (rand(50) - 25) / 10.0
- when 6
- vx = 1 + vague * (cols - x) / cols * (1.0 + rand / 5.0)
- vy = (rand(50) - 25) / 10.0
- when 8
- rows = cells / cols
- vx = (rand(50) - 25) / 10.0
- vy = -1 - vague * (y + 1) / rows * (1.0 + rand / 5.0)
- end
- mag = 60.0 / @sp_transition_duration
- return [vx * mag, vy * mag]
- end
- def update_splash
- if @sp_transition_duration == 0
- finish_special_transition
- return
- end
- opacity = 384 * @sp_transition_duration / 60
- @sp_transition_sprites.each_with_index { |sprite, i|
- sprite.x += @splash_dir[i][0]
- sprite.y += @splash_dir[i][1]
- sprite.angle += @splash_angle[i]
- sprite.opacity = opacity
- }
- @sp_transition_duration -= 1
- end
- def finish_special_transition
- if @sp_transition_buffer != nil
- @sp_transition_buffer.dispose
- @sp_transition_buffer = nil
- end
- @splash_dir = nil
- @splash_angle = nil
- @sp_transition_sprites.each { |sprite|
- sprite.bitmap.dispose
- sprite.dispose
- }
- @sp_transition_sprites = []
- @sp_transition_duration_max = -1
- @sp_transition_duration = -1
- @re_deck[@ecard_index].dispose if !@re_deck[@ecard_index].disposed?
- @rp_deck[@card_index].dispose if !@rp_deck[@card_index].disposed?
- if @p_win+@e_win != 5 and @mode == 1
- loop do
- if @ecard_index < 4
- @ecard_index += 1
- elsif @ecard_index == 4
- @ecard_index = 0
- end
- if !@re_deck[@ecard_index].disposed?
- break
- end
- end
- loop do
- if @card_index < 4
- @card_index += 1
- elsif @card_index == 4
- @card_index = 0
- end
- if !@rp_deck[@card_index].disposed?
- break
- end
- end
- refresh_card_x
- start_card_selection
- elsif @mode == 2
- draw_more_card
- refresh_card_x
- start_card_selection
- end
- end
- def terminate
- super
- @slash.dispose if !@slash.nil?
- @score_p.dispose
- @score_e.dispose
- @bg.dispose
- @bgintf.dispose
- for card in @rp_deck+@re_deck
- card.dispose
- end
- @day.dispose
- @bet_window.dispose
- @e_sprite.dispose
- @p_sprite.dispose
- @thedayof.dispose
- @se_win.dispose
- @sp_win.dispose
- @te.dispose if !@te.nil?
- @tp.dispose if !@tp.nil?
- @help_window.dispose
- @bet_sprite.dispose if !@bet_sprite.nil?
- @finish_window.dispose
- @report_window.dispose if @report_window != nil
- @choice_window.dispose
- @mode_window.dispose if !@mode_window.nil?
- @ach_text.dispose if @ach_text != nil
- @ac_ach_text.dispose if @ac_ach_text != nil
- @ach_text = nil
- @ac_ach_text = nil
- @combo_sprite.dispose if !@combo_sprite.nil?
- @goal_score.dispose if !@goal_score.nil?
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement