blob: 3409a5f8aefcdf66aaf6818ada0c50baa121b2bf (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
module Pokeviewer
class ExtractSaveDataJob < ApplicationJob
queue_as :default
def perform(args)
game = Trainer.find_or_create_by!(
name: args["playerName"],
number: args["playerId"]) do |r|
case args["gameId"].to_i
when 1
r.game = :ruby
when 2
r.game = :sapphire
when 3
r.game = :firered
when 4
r.game = :leafgreen
when 5
r.game = :emerald
else
# Invalid, so just leave the field nil
end
end
args["boxes"].each_with_index do |box_name,index|
box = Box.find_or_initialize_by(trainer: game, number: index)
box.name = box_name
box.save!
end
game.pokemon.clear
args["pokemon"].each do |param|
pk = Pokemon.find_or_create_by!(key: param["key"]) do |r|
r.species_id = param["species"]
r.ot_name = param["otName"]
r.ot_number = param["otId"]
r.ot_gender = param["otGender"]
if param["metLevel"] == 0
r.met_type = :hatched
else
r.met_type = :normal
r.met_level = param["metLevel"]
end
r.shiny = param["shiny"]
r.nature = Pokemon.nature.values[param["nature"]]
r.gender = param["gender"]
r.second_ability = param["secondAbility"]
# Handle Unown form
if r.species_id == 201
r.unown_letter = Pokemon.unown_letter.values[param["unownLetter"]]
end
end
pk.trainer = game
if param["storage"] == "party"
pk.box = nil
elsif param["storage"] == "box"
pk.box = param["box"]
end
pk.slot = param["slot"]
pk.save!
rev = Revision.new(pokemon: pk)
rev.nickname = param["nickname"]
rev.experience = param["experience"]
rev.level = param["level"]
rev.hp = param["hp"]
rev.attack = param["attack"]
rev.defense = param["defense"]
rev.special_attack = param["spAttack"]
rev.special_defense = param["spDefense"]
rev.speed = param["speed"]
rev.coolness = param["coolness"]
rev.beauty = param["beauty"]
rev.cuteness = param["cuteness"]
rev.smartness = param["smartness"]
rev.toughness = param["toughness"]
rev.sheen = param["sheen"]
rev.hold_item = param["heldItem"]
rev.move_1_id = param["moves"][0]["id"]
rev.move_1_pp_bonuses = param["moves"][0]["ppBonuses"]
if param["moves"].length >= 2
rev.move_2_id = param["moves"][1]["id"]
rev.move_2_pp_bonuses = param["moves"][1]["ppBonuses"]
end
if param["moves"].length >= 3
rev.move_3_id = param["moves"][2]["id"]
rev.move_3_pp_bonuses = param["moves"][2]["ppBonuses"]
end
if param["moves"].length == 4
rev.move_4_id = param["moves"][3]["id"]
rev.move_4_pp_bonuses = param["moves"][3]["ppBonuses"]
end
if pk.revisions.empty? or rev.diff?(pk.revisions.last)
rev.save!
end
end
end
end
end
|