blob: e4f3ae26b0295a1f4078e94a97efa457d18ca5d9 (
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
|
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
pokemons = args["pokemon"].map 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"]
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
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
pk
end
game.pokemon = pokemons
end
end
end
|