Advertisement
TechSkylander1518

Save File Calls (v20)

Dec 19th, 2022
1,085
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 9.29 KB | None | 0 0
  1. def pbSaveFile(name,ver=20)
  2.   case ver
  3.     when 20, 19
  4.       location = File.join("C:/Users",System.user_name,"AppData/Roaming",name)
  5.       return false unless File.directory?(location)
  6.       file = File.join(location, 'Game.rxdata')
  7.       return false unless File.file?(file)
  8.       save_data = SaveData.get_data_from_file(file)
  9.     when 18
  10.       home = ENV['HOME'] || ENV['HOMEPATH']
  11.       return false if home.nil?
  12.       location = File.join(home, 'Saved Games', name)
  13.       return false unless File.directory?(location)
  14.       file = File.join(location, 'Game.rxdata')
  15.       return false unless File.file?(file)
  16.       save_data = SaveData.get_data_from_file(file).clone
  17.       save_data = SaveData.to_hash_format(save_data) if save_data.is_a?(Array)
  18.   end
  19.   return save_data
  20. end
  21.  
  22.  
  23.  
  24. def pbSaveTest(name,test,param=nil,ver=20)
  25.   save = pbSaveFile(name,ver)
  26.   result = false
  27.   test = test.capitalize
  28.   if save
  29.     case test
  30.       when "Exist"
  31.         result = true
  32.       when "Map"
  33.         result = (save[:map_factory].map.map_id == param)
  34.       when "Name"
  35.         result = (save[:player].name == param)
  36.       when "Switch"
  37.         result = (save[:switches][param] == true)
  38.       when "Variable"
  39.         varnum = param[0]
  40.         varval = param[1]
  41.         if varval.is_a?(Numeric)
  42.           result = (save[:variables][varnum] >= varval)
  43.         else
  44.           result = (save[:variables][varnum] == varval)
  45.         end
  46.       when "Party"
  47.         party = save[:player].party
  48.         for i in 0...party.length
  49.           poke = party[i]
  50.           result = true if poke.species == param
  51.         end
  52.       when "Seen"
  53.         if ver == 18
  54.           result = save[:player].seen[param]
  55.         else
  56.           result = (save[:player].pokedex.seen?(param))
  57.         end
  58.       when "Owned"
  59.         if ver == 18
  60.           result = save[:player].owned[param]
  61.         else
  62.           result = (save[:player].pokedex.owned?(param))
  63.         end
  64.       when "Item"
  65.         if ver == 18
  66.           oldbag = save[:bag].clone
  67.           for i in 0...oldbag.pockets.length
  68.             pocket = oldbag.pockets[i]
  69.             for j in 0...pocket.length
  70.               item = pocket[j]
  71.               if item[0] == param
  72.                 result = true
  73.                 break
  74.               end
  75.             end
  76.           end
  77.         else
  78.           result = (save[:bag].has?(param))
  79.         end
  80.     end
  81.   return result
  82. end
  83.  
  84. #Old utilities to convert prior data
  85. class PokeBattle_Trainer
  86.   attr_accessor :trainertype, :name, :id, :metaID, :outfit, :language
  87.   attr_accessor :party, :badges, :money
  88.   attr_accessor :seen, :owned, :formseen, :formlastseen, :shadowcaught
  89.   attr_accessor :pokedex, :pokegear
  90.   attr_accessor :mysterygiftaccess, :mysterygift
  91.  
  92.   def self.convert(trainer)
  93.     validate trainer => self
  94.     ret = Player.new(trainer.name, trainer.trainertype)
  95.     ret.id                    = trainer.id
  96.     ret.character_ID          = trainer.metaID if trainer.metaID
  97.     ret.outfit                = trainer.outfit if trainer.outfit
  98.     ret.language              = trainer.language if trainer.language
  99.     trainer.party.each { |p| ret.party.push(PokeBattle_Pokemon.convert(p)) }
  100.     ret.badges                = trainer.badges.clone
  101.     ret.money                 = trainer.money
  102.     trainer.seen.each_with_index { |value, i| ret.pokedex.set_seen(i, false) if value }
  103.     trainer.owned.each_with_index { |value, i| ret.pokedex.set_owned(i, false) if value }
  104.     trainer.formseen.each_with_index do |value, i|
  105.       species_id = GameData::Species.try_get(i)&.species
  106.       next if species_id.nil? || value.nil?
  107.       ret.pokedex.seen_forms[species_id] = [value[0].clone, value[1].clone] if value
  108.     end
  109.     trainer.formlastseen.each_with_index do |value, i|
  110.       species_id = GameData::Species.try_get(i)&.species
  111.       next if species_id.nil? || value.nil?
  112.       ret.pokedex.set_last_form_seen(species_id, value[0], value[1]) if value
  113.     end
  114.     if trainer.shadowcaught
  115.       trainer.shadowcaught.each_with_index do |value, i|
  116.         ret.pokedex.set_shadow_pokemon_owned(i) if value
  117.       end
  118.     end
  119.     ret.pokedex.refresh_accessible_dexes
  120.     ret.has_pokedex           = trainer.pokedex
  121.     ret.has_pokegear          = trainer.pokegear
  122.     ret.mystery_gift_unlocked = trainer.mysterygiftaccess if trainer.mysterygiftaccess
  123.     ret.mystery_gifts         = trainer.mysterygift.clone if trainer.mysterygift
  124.     return ret
  125.   end
  126. end
  127.  
  128. class PokeBattle_Pokemon
  129.   attr_accessor :name, :species, :form, :formTime, :forcedForm, :fused
  130.   attr_accessor :personalID, :exp, :hp, :status, :statusCount
  131.   attr_accessor :abilityflag, :genderflag, :natureflag, :natureOverride, :shinyflag
  132.   attr_accessor :moves, :firstmoves
  133.   attr_accessor :item, :mail
  134.   attr_accessor :iv, :ivMaxed, :ev
  135.   attr_accessor :happiness, :eggsteps, :pokerus
  136.   attr_accessor :ballused, :markings, :ribbons
  137.   attr_accessor :obtainMode, :obtainMap, :obtainText, :obtainLevel, :hatchedMap
  138.   attr_accessor :timeReceived, :timeEggHatched
  139.   attr_accessor :cool, :beauty, :cute, :smart, :tough, :sheen
  140.   attr_accessor :trainerID, :ot, :otgender, :language
  141.   attr_accessor :shadow, :heartgauge, :savedexp, :savedev, :hypermode, :shadowmoves
  142.  
  143.   def initialize(*args)
  144.     raise "PokeBattle_Pokemon.new is deprecated. Use Pokemon.new instead."
  145.   end
  146.  
  147.   def self.convert(pkmn)
  148.     return pkmn if pkmn.is_a?(Pokemon)
  149.     owner = Pokemon::Owner.new(pkmn.trainerID, pkmn.ot, pkmn.otgender, pkmn.language)
  150.     natdex = [:NONE]
  151.     GameData::Species.each_species { |s| natdex.push(s.id) }
  152.     pkmn.species = natdex[pkmn.species]
  153.     # Set level to 1 initially, as it will be recalculated later
  154.     ret = Pokemon.new(pkmn.species, 1, owner, false, false)
  155.     ret.forced_form      = pkmn.forcedForm if pkmn.forcedForm
  156.     ret.time_form_set    = pkmn.formTime
  157.     ret.exp              = pkmn.exp
  158.     ret.steps_to_hatch   = pkmn.eggsteps
  159.     GameData::Status.each do |s|
  160.       pkmn.status = s.id if s.icon_position == pkmn.status
  161.     end
  162.     ret.status           = pkmn.status
  163.     ret.statusCount      = pkmn.statusCount
  164.     ret.gender           = pkmn.genderflag
  165.     ret.shiny            = pkmn.shinyflag
  166.     ret.ability_index    = pkmn.abilityflag
  167.     ret.nature           = pkmn.natureflag
  168.     ret.nature_for_stats = pkmn.natureOverride
  169.     ret.item             = pkmn.item
  170.     ret.mail             = PokemonMail.convert(pkmn.mail) if pkmn.mail
  171.     pkmn.moves.each { |m| ret.moves.push(PBMove.convert(m)) if m && m.id > 0 }
  172.     if pkmn.firstmoves
  173.       pkmn.firstmoves.each { |m| ret.add_first_move(m) }
  174.     end
  175.     if pkmn.ribbons
  176.       pkmn.ribbons.each { |r| ret.giveRibbon(r) }
  177.     end
  178.     ret.cool             = pkmn.cool if pkmn.cool
  179.     ret.beauty           = pkmn.beauty if pkmn.beauty
  180.     ret.cute             = pkmn.cute if pkmn.cute
  181.     ret.smart            = pkmn.smart if pkmn.smart
  182.     ret.tough            = pkmn.tough if pkmn.tough
  183.     ret.sheen            = pkmn.sheen if pkmn.sheen
  184.     ret.pokerus          = pkmn.pokerus if pkmn.pokerus
  185.     ret.name             = pkmn.name if pkmn.name != ret.speciesName
  186.     ret.happiness        = pkmn.happiness
  187.     ret.poke_ball        = pbBallTypeToItem(pkmn.ballused).id
  188.     ret.markings         = pkmn.markings if pkmn.markings
  189.     GameData::Stat.each_main do |s|
  190.       ret.iv[s.id]       = pkmn.iv[s.id_number]
  191.       ret.ivMaxed[s.id]  = pkmn.ivMaxed[s.id_number] if pkmn.ivMaxed
  192.       ret.ev[s.id]       = pkmn.ev[s.id_number]
  193.     end
  194.     ret.obtain_method    = pkmn.obtainMode
  195.     ret.obtain_map       = pkmn.obtainMap
  196.     ret.obtain_text      = pkmn.obtainText
  197.     ret.obtain_level     = pkmn.obtainLevel if pkmn.obtainLevel
  198.     ret.hatched_map      = pkmn.hatchedMap
  199.     ret.timeReceived     = pkmn.timeReceived
  200.     ret.timeEggHatched   = pkmn.timeEggHatched
  201.     if pkmn.fused
  202.       ret.fused = PokeBattle_Pokemon.convert(pkmn.fused) if pkmn.fused.is_a?(PokeBattle_Pokemon)
  203.       ret.fused = pkmn.fused if pkmn.fused.is_a?(Pokemon)
  204.     end
  205.     ret.personalID       = pkmn.personalID
  206.     ret.hp               = pkmn.hp
  207.     if pkmn.shadow
  208.       ret.shadow         = pkmn.shadow
  209.       ret.heart_gauge    = pkmn.heartgauge
  210.       ret.hyper_mode     = pkmn.hypermode
  211.       ret.saved_exp      = pkmn.savedexp
  212.       if pkmn.savedev
  213.         GameData::Stat.each_main { |s| ret.saved_ev[s.id] = pkmn.savedev[s.pbs_order] if s.pbs_order >= 0 }
  214.       end
  215.       ret.shadow_moves   = []
  216.       pkmn.shadowmoves.each_with_index do |move, i|
  217.         ret.shadow_moves[i] = GameData::Move.get(move).id if move
  218.       end
  219.     end
  220.     # NOTE: Intentionally set last, as it recalculates stats.
  221.     ret.form_simple      = pkmn.form || 0
  222.     return ret
  223.   end
  224. end
  225.  
  226. class PBMove
  227.   attr_accessor :id, :pp, :ppup
  228.  
  229.   def self.convert(move)
  230.     ret = Pokemon::Move.new(move.id)
  231.     ret.ppup = move.ppup
  232.     ret.pp = move.pp
  233.     return ret
  234.   end
  235. end
  236.  
  237. class PokemonMail
  238.   attr_accessor :item, :message, :sender, :poke1, :poke2, :poke3
  239.  
  240.   def self.convert(mail)
  241.     return mail if mail.is_a?(Mail)
  242.     item.poke1[0] = GameData::Species.get(item.poke1[0]).id if item.poke1
  243.     item.poke2[0] = GameData::Species.get(item.poke2[0]).id if item.poke2
  244.     item.poke3[0] = GameData::Species.get(item.poke3[0]).id if item.poke3
  245.     return Mail.new(mail.item, item.message, item.sender, item.poke1, item.poke2, item.poke3)
  246.   end
  247. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement