#==============================================================================
# ■ Coin_Base vol.5.00
#------------------------------------------------------------------------------
# パーティにコインを追加(Game_Partyより下に挿入)
# コイン数は、$game_party.coin から参照されます。
#------------------------------------------------------------------------------
# □ゲーム変数に代入
# イベントのイベントコマンド『スクリプト』に↓を記入して実行して下さい。 
# $game_variables[1] = $game_party.coin 
# 
# $game_variables[n] ←イベントの変数で、nがイベントIDです。 
# ↑の場合は、変数1番にコイン枚数を代入する命令となっています。
#------------------------------------------------------------------------------
# コインのn増加 = $game_party.gain_coin(n)
# コインのn減少 = $game_party.lose_coin(n)
#------------------------------------------------------------------------------
# □エラーが発生した場合(カジノ変数を全て初期化します。)
# イベントのイベントコマンド『スクリプト』に↓を記入して実行して下さい。 
# $game_party.coin_game_format?(true)
#------------------------------------------------------------------------------
# 12/04/22
#==============================================================================
class Game_Party
  #--------------------------------------------------------------------------
  # ■ 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :coin_game_format          # 競合対策フラグ
  attr_accessor :coin                      # コイン枚数を格納
  attr_accessor :roulette_average          # ルーレット確率を格納
  attr_accessor :roulette_draw             # ルーレットパターンIDを格納
  attr_accessor :puzzle25_times            # 25パズルタイムを格納
  attr_accessor :baccarat_data             # バカラデータを格納
  attr_accessor :sicbo_average             # シックボー確率を格納
  attr_accessor :sicbo_draw                # シックボーパターンIDを格納
  attr_accessor :keno_data                 # ケノデータを格納
  attr_accessor :keno_quick                # ケノ簡易アニメフラグを格納
  attr_accessor :scratch_data              # スクラッチカードデータを格納
  attr_accessor :scratch_quick             # スクラッチカード簡易アニメフラグ
  #--------------------------------------------------------------------------
  # ■ コインの増加
  #--------------------------------------------------------------------------
  def gain_coin(n)
    unless @coin.is_a?(Numeric)
      @coin = 0
      # □コイン枚数を初期化
      coin_game_format?
    end
    @coin = [[@coin + n, 0].max, 9999999999].min
  end
  #--------------------------------------------------------------------------
  # ■ コインの減少
  #--------------------------------------------------------------------------
  def lose_coin(n)
    # □数値を逆転して gain_coin を呼ぶ
    gain_coin(-n)
  end
  #--------------------------------------------------------------------------
  # ■ 競合対策の処理(初期化)
  #--------------------------------------------------------------------------
  def coin_game_format?(format = false)
    if $game_party.coin_game_format == nil or format
      # □コイン枚数を初期化
      unless $game_party.coin.is_a?(Numeric)
        $game_party.coin = 0
      end
      # □スロットマシーンを初期化
      $game_temp.slot_calling = false
      $game_temp.slot_type = 0 ; $game_temp.slot_pattern = 0
      # □ポーカーを初期化
      $game_temp.poker_calling = false ; $game_temp.poker_type = 0
      # □オープンパネルを初期化
      $game_temp.panel_calling = false
      $game_temp.panel_type = 0 ; $game_temp.panel_pattern = 0
      # □ルーレット履歴を初期化
      $game_party.roulette_average = [] ; $game_party.roulette_draw = []
      $game_temp.roulette_calling = false ; $game_temp.roulette_type = 0
      # □ビンゴを初期化
      $game_temp.bingo_calling = false ; $game_temp.bingo_type = 0
      # □コイン交換所を初期化
      $game_temp.coin_shop_calling = false
      $game_temp.coin_shop_type = 0 ; $game_temp.coin_shop_pattern = 0
      # □25パズル履歴を初期化
      $game_party.puzzle25_times = []
      $game_temp.puzzle25_calling = false ; $game_temp.puzzle25_type = 0
      # □バカラを初期化
      $game_party.baccarat_data = []
      $game_temp.baccarat_calling = false ; $game_temp.baccarat_type = 0
      # □ブラックジャックを初期化
      $game_temp.blackjack_calling = false ; $game_temp.blackjack_type = 0
      # □シックボー履歴を初期化
      $game_party.sicbo_average = [] ; $game_party.sicbo_draw = []
      $game_temp.sicbo_calling = false ; $game_temp.sicbo_type = 0
      # □ケノを初期化
      $game_party.keno_data = [] ; $game_party.keno_quick = []
      $game_temp.keno_calling = false ; $game_temp.keno_type = 0
      # □スクラッチカードを初期化
      $game_party.scratch_data = [] ; $game_party.scratch_quick = []
      $game_temp.scratch_calling = false ; $game_temp.scratch_type = 0
      # □競合対策フラグをON
      $game_party.coin_game_format = true
    end
  end
end
#==============================================================================
# ■ Scene_Map
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  # ■ フレーム更新
  #--------------------------------------------------------------------------
  if !$@;alias hidesp_scene_map_coingame_update update;end
  def update
    # □プレイヤーの移動中ではない場合
    unless $game_player.moving?
      # □スロットマシーンの呼び出し
      if $game_temp.slot_calling
        call_slot
      end
      # □ポーカーの呼び出し
      if $game_temp.poker_calling
        call_poker
      end
      # □オープンパネルの呼び出し
      if $game_temp.panel_calling
        call_panel
      end
      # □ルーレットの呼び出し
      if $game_temp.roulette_calling
        call_roulette
      end
      # □ビンゴの呼び出し
      if $game_temp.bingo_calling
        call_bingo
      end
      # □コイン交換所の呼び出し
      if $game_temp.coin_shop_calling
        call_coin_shop
      end
      # □25パズルの呼び出し
      if $game_temp.puzzle25_calling
        call_25puzzle
      end
      # □バカラの呼び出し
      if $game_temp.baccarat_calling
        call_baccarat
      end
      # □ブラックジャックの呼び出し
      if $game_temp.blackjack_calling
        call_blackjack
      end
      # □シックボーの呼び出し
      if $game_temp.sicbo_calling
        call_sicbo
      end
      # □ケノの呼び出し
      if $game_temp.keno_calling
        call_keno
      end
      # □スクラッチカードの呼び出し
      if $game_temp.scratch_calling
        call_scratch
      end
    end
    # □元の処理を実行
    hidesp_scene_map_coingame_update
  end
  #--------------------------------------------------------------------------
  # ■ スロットマシーンの呼び出し
  #--------------------------------------------------------------------------
  def call_slot
    # スロット呼び出しフラグをクリア
    $game_temp.slot_calling = false
    $coin_scene = 1
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # スロット画面に切り替え
    $scene = Scene_Slot.new
  end
  #--------------------------------------------------------------------------
  # ■ ポーカーの呼び出し
  #--------------------------------------------------------------------------
  def call_poker
    # ポーカー呼び出しフラグをクリア
    $game_temp.poker_calling = false
    $coin_scene = 2
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # ポーカー画面に切り替え
    $scene = Scene_Poker.new
  end
  #--------------------------------------------------------------------------
  # ■ オープンパネルの呼び出し
  #--------------------------------------------------------------------------
  def call_panel
    # オープンパネル呼び出しフラグをクリア
    $game_temp.panel_calling = false
    $coin_scene = 3
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # オープンパネル画面に切り替え
    $scene = Scene_Panel.new
  end
  #--------------------------------------------------------------------------
  # ■ ルーレットの呼び出し
  #--------------------------------------------------------------------------
  def call_roulette
    # ルーレット呼び出しフラグをクリア
    $game_temp.roulette_calling = false
    $coin_scene = 4
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # ルーレット画面に切り替え
    $scene = Scene_Roulette.new
  end
  #--------------------------------------------------------------------------
  # ■ ビンゴの呼び出し
  #--------------------------------------------------------------------------
  def call_bingo
    # ビンゴ呼び出しフラグをクリア
    $game_temp.bingo_calling = false
    $coin_scene = 5
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # ルーレット画面に切り替え
    $scene = Scene_Bingo.new
  end
  #--------------------------------------------------------------------------
  # ■ コイン交換所の呼び出し
  #--------------------------------------------------------------------------
  def call_coin_shop
    $game_temp.coin_shop_calling = false
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    case $game_temp.coin_shop_type
    when 0 # コイン購入
      $coin_scene = 6
      $scene = Scene_Coin_Chenge.new
    when 1 # コイン交換
      $coin_scene = 7
      $scene = Scene_Coin_shop.new
    end
  end
  #--------------------------------------------------------------------------
  # ■ 25パズルの呼び出し
  #--------------------------------------------------------------------------
  def call_25puzzle
    # 25パズル呼び出しフラグをクリア
    $game_temp.puzzle25_calling = false
    $coin_scene = 8
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # 25パズル画面に切り替え
    $scene = Scene_25Puzzle.new
  end
  #--------------------------------------------------------------------------
  # ■ バカラの呼び出し
  #--------------------------------------------------------------------------
  def call_baccarat
    # バカラ呼び出しフラグをクリア
    $game_temp.baccarat_calling = false
    $coin_scene = 9
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # バカラ画面に切り替え
    $scene = Scene_Baccarat.new
  end
  #--------------------------------------------------------------------------
  # ■ ブラックジャックの呼び出し
  #--------------------------------------------------------------------------
  def call_blackjack
    # ブラックジャック呼び出しフラグをクリア
    $game_temp.blackjack_calling = false
    $coin_scene = 10
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # ブラックジャック画面に切り替え
    $scene = Scene_BlackJack.new
  end
  #--------------------------------------------------------------------------
  # ■ シックボーの呼び出し
  #--------------------------------------------------------------------------
  def call_sicbo
    # シックボー呼び出しフラグをクリア
    $game_temp.sicbo_calling = false
    $coin_scene = 11
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # シックボー画面に切り替え
    $scene = Scene_SicBo.new
  end
  #--------------------------------------------------------------------------
  # ■ ケノの呼び出し
  #--------------------------------------------------------------------------
  def call_keno
    # ケノ呼び出しフラグをクリア
    $game_temp.keno_calling = false
    $coin_scene = 12
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # ケノ画面に切り替え
    $scene = Scene_Keno.new
  end
  #--------------------------------------------------------------------------
  # ■ スクラッチカードの呼び出し
  #--------------------------------------------------------------------------
  def call_scratch
    # スクラッチカード呼び出しフラグをクリア
    $game_temp.scratch_calling = false
    $coin_scene = 13
    # プレイヤーの姿勢を矯正
    $game_player.straighten
    # ケノ画面に切り替え
    $scene = Scene_Scratch.new
  end
end
#==============================================================================
# ■ Game_Temp
#==============================================================================
class Game_Temp
  #--------------------------------------------------------------------------
  # ■ 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :slot_calling              # スロット呼び出しフラグ
  attr_accessor :slot_type                 # スロットタイプを格納
  attr_accessor :slot_pattern              # スロットの絵柄パターンを格納
  attr_accessor :poker_calling             # ポーカー呼び出しフラグ
  attr_accessor :poker_type                # ポーカータイプを格納
  attr_accessor :panel_calling             # オープンパネル呼び出しフラグ
  attr_accessor :panel_type                # オープンパネルタイプを格納
  attr_accessor :panel_pattern             # オープンパネルの絵柄パターンを格納
  attr_accessor :coin_shop_calling         # コインショップ呼び出しフラグ
  attr_accessor :coin_shop_type            # 0=コイン購入 1=アイテムに交換
  attr_accessor :coin_shop_pattern         # コインショップパターンを格納
  attr_accessor :roulette_calling          # ルーレット呼び出しフラグ
  attr_accessor :roulette_type             # ルーレットタイプを格納
  attr_accessor :bingo_calling             # ビンゴ呼び出しフラグ
  attr_accessor :bingo_type                # ビンゴタイプを格納
  attr_accessor :puzzle25_calling          # 25パズル呼び出しフラグ
  attr_accessor :puzzle25_type             # 25パズルタイプを格納
  attr_accessor :baccarat_calling          # バカラ呼び出しフラグ
  attr_accessor :baccarat_type             # バカラタイプを格納
  attr_accessor :blackjack_calling         # ブラックジャック呼び出しフラグ
  attr_accessor :blackjack_type            # ブラックジャックタイプを格納
  attr_accessor :sicbo_calling             # シックボー呼び出しフラグ
  attr_accessor :sicbo_type                # シックボータイプを格納
  attr_accessor :keno_calling              # ケノ呼び出しフラグ
  attr_accessor :keno_type                 # ケノタイプを格納
  attr_accessor :scratch_calling           # スクラッチカード呼び出しフラグ
  attr_accessor :scratch_type              # スクラッチカードタイプを格納
end
#==============================================================================
# ■ Interpreter
#==============================================================================
class Interpreter
  #--------------------------------------------------------------------------
  # ■ スロットの処理
  #--------------------------------------------------------------------------
  def make_slot(type = 0,pattern = nil)
    make_coin_reset?
    # □スロット呼び出しフラグをセット
    $game_temp.slot_calling = true
    # □スロットタイプを格納
    $game_temp.slot_type = type
    # □スロットの絵柄パターンを格納
    $game_temp.slot_pattern = pattern
    return false
  end
  #--------------------------------------------------------------------------
  # ■ ポーカーの処理
  #--------------------------------------------------------------------------
  def make_poker(type = 0)
    make_coin_reset?
    # □ポーカー呼び出しフラグをセット
    $game_temp.poker_calling = true
    # □ポーカータイプを格納
    $game_temp.poker_type = type
    return false
  end
  #--------------------------------------------------------------------------
  # ■ オープンパネルの処理
  #--------------------------------------------------------------------------
  def make_panel(type = 0,pattern = 0)
    make_coin_reset?
    # □オープンパネル呼び出しフラグをセット
    $game_temp.panel_calling = true
    # □オープンパネルタイプを格納
    $game_temp.panel_type = type
    # □オープンパネルの絵柄パターンを格納
    $game_temp.panel_pattern = pattern
    return false
  end
  #--------------------------------------------------------------------------
  # ■ ルーレットの処理
  #--------------------------------------------------------------------------
  def make_roulette(type = 0)
    make_coin_reset?
    # □ルーレット呼び出しフラグをセット
    $game_temp.roulette_calling = true
    # □ルーレットタイプを格納
    $game_temp.roulette_type = type
    return false
  end
  #--------------------------------------------------------------------------
  # ■ ビンゴの処理
  #--------------------------------------------------------------------------
  def make_bingo(type = 0)
    make_coin_reset?
    # □ビンゴ呼び出しフラグをセット
    $game_temp.bingo_calling = true
    # □ビンゴタイプを格納
    $game_temp.bingo_type = type
    return false
  end
  #--------------------------------------------------------------------------
  # ■ コイン交換所の処理
  #--------------------------------------------------------------------------
  def make_coin_shop(type = 0,pattern = 0)
    make_coin_reset?
    # □コイン交換所タイプを格納
    $game_temp.coin_shop_type = type
    # □コイン交換所パターンを格納
    $game_temp.coin_shop_pattern = pattern
    # □コイン交換所呼び出しフラグをセット
    $game_temp.coin_shop_calling = true
    return false
  end
  #--------------------------------------------------------------------------
  # ■ 25パズルの処理
  #--------------------------------------------------------------------------
  def make_25puzzle(type = 0)
    make_coin_reset?
    # □25パズル呼び出しフラグをセット
    $game_temp.puzzle25_calling = true
    # □25パズルタイプを格納
    $game_temp.puzzle25_type = type
    return false
  end
  #--------------------------------------------------------------------------
  # ■ バカラの処理
  #--------------------------------------------------------------------------
  def make_baccarat(type = 0)
    make_coin_reset?
    # □バカラ呼び出しフラグをセット
    $game_temp.baccarat_calling = true
    # □バカラタイプを格納
    $game_temp.baccarat_type = type
    return false
  end
  #--------------------------------------------------------------------------
  # ■ ブラックジャックの処理
  #--------------------------------------------------------------------------
  def make_blackjack(type = 0)
    make_coin_reset?
    # □ブラックジャック呼び出しフラグをセット
    $game_temp.blackjack_calling = true
    # □ブラックジャックタイプを格納
    $game_temp.blackjack_type = type
    return false
  end
  #--------------------------------------------------------------------------
  # ■ シックボーの処理
  #--------------------------------------------------------------------------
  def make_sicbo(type = 0)
    make_coin_reset?
    # □シックボー呼び出しフラグをセット
    $game_temp.sicbo_calling = true
    # □シックボータイプを格納
    $game_temp.sicbo_type = type
    return false
  end
  #--------------------------------------------------------------------------
  # ■ ケノの処理
  #--------------------------------------------------------------------------
  def make_keno(type = 0)
    make_coin_reset?
    # □ケノ呼び出しフラグをセット
    $game_temp.keno_calling = true
    # □ケノタイプを格納
    $game_temp.keno_type = type
    return false
  end
  #--------------------------------------------------------------------------
  # ■ スクラッチカードの処理
  #--------------------------------------------------------------------------
  def make_scratch(type = 0)
    make_coin_reset?
    # □スクラッチカード呼び出しフラグをセット
    $game_temp.scratch_calling = true
    # □スクラッチカードタイプを格納
    $game_temp.scratch_type = type
    return false
  end
  #--------------------------------------------------------------------------
  # ■ コインゲームの処理の初期化
  #--------------------------------------------------------------------------
  def make_coin_reset?
    # □競合対策の処理(初期化)
    $game_party.coin_game_format?
    # □バトル中断フラグをセット
    $game_temp.battle_abort = true
    # □インデックスを進める
    @index += 1
  end
end