# 简易跨存档变量 by cupidk rays 制作
# 脚本特性: 生成的数据即便不进行存档也依旧不会消失 (制作多周目游戏)
# 变量获取方法 CUPIDK::NGVAR.get_var(id)
# 数据获取方法 CUPIDK::NGVAR.get_data
module CUPIDK end
module CUPIDK::NGVAR
   # 被跨存档变量占用的变量位置
   
   VAR_RANGE = 1..100
   
  # 这里设置一些初始的数值 ↓
   # 数字类变量初始化请写在这里
   SETINIT_VAR = [0]
   
   NGTIMES_VARID = 1   # 存储周目数的跨存档变量ID
   
   NGCASE_SIZE = 3 # 这里设置每次周目额外获得的仓库容量上限
   
   SETINIT_VAR[NGTIMES_VARID] = 1  # 周目数初始化
   
   
   # 各种数据类请保存在这里(如数组,哈希表等)
   SETINIT_DATA = {
   "NG_items" => {} , # 跨存档物品
   }
   
  def self.init_Ngdata(name)
    save_data(SETINIT_DATA, name)
  end  
  def self.data_set(name)
    init_Ngdata(name) unless FileTest.exist?(name)
    @Game_DataNg = load_data(name)
  end  
  def self.get_data
    @Game_DataNg
  end

  def self.init_Ngvar(name)
    save_data(SETINIT_VAR, name)
  end  
  def self.var_set(name)
    init_Ngvar(name) unless FileTest.exist?(name)
    @Game_VarNg = load_data(name)
  end  
  def self.var_refresh(var_id, value, name = "Data/NGvar.rxdata")
    @Game_VarNg[var_id] = value
    save_data(@Game_VarNg, name)
  end  
  def self.get_var(var_id)
    @Game_VarNg[var_id] || 0
  end
end 
class Scene_Title
  include CUPIDK
  alias :old_start_21518 :main
  def main
     NGVAR.data_set("Data/NGdata.rxdata")
     NGVAR.var_set("Data/NGvar.rxdata")
     old_start_21518
   end    
end
class Game_Variables
  include CUPIDK
  alias_method "old_var_give_21518", "[]="
  def []=(var_id, value)
    return NGVAR.var_refresh(var_id, value) if NGVAR::VAR_RANGE === var_id
    old_var_give_21518(var_id, value)
  end
  alias_method "old_var_21518", "[]"
  def [](var_id)
    return NGVAR.get_var(var_id) if NGVAR::VAR_RANGE === var_id
    old_var_21518(var_id)
  end
end