Skip to content

Commit f1a9cba

Browse files
committed
fix: invasion size by rocket Pokemon when confirmed lineups
1 parent 2cbc417 commit f1a9cba

1 file changed

Lines changed: 68 additions & 85 deletions

File tree

src/features/pokestop/usePokestopMarker.js

Lines changed: 68 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,64 @@ export function usePokestopMarker({
107107
const gruntData = masterfile.invasions[invasion.grunt_type]
108108
if (invasion.confirmed && invasion.encounters) {
109109
// If invasion has confirmed lineup from DB, use those specific rewards
110-
// But still check which encounters are actually available as rewards
111-
if (gruntData?.firstReward && invasion.encounters.first) {
112-
invasion.encounters.first.forEach((encounter) => {
113-
const pokemonKey = `a${encounter.pokemon_id}-${encounter.pokemon_form || 0}`
114-
const pokemonKeySimple = `a${encounter.pokemon_id}`
110+
// Check the actual confirmed reward Pokemon
111+
if (gruntData?.firstReward && invasion.slot_1_pokemon_id) {
112+
const pokemonKey = `a${invasion.slot_1_pokemon_id}-${invasion.slot_1_form || 0}`
113+
const pokemonKeySimple = `a${invasion.slot_1_pokemon_id}`
114+
115+
// Only consider this Pokemon's size if it's enabled in filters
116+
if (
117+
filters[pokemonKey]?.enabled ||
118+
filters[pokemonKeySimple]?.enabled
119+
) {
120+
const rewardSize =
121+
Icons.getSize('invasion', filters[pokemonKey]?.size) ||
122+
Icons.getSize('invasion', filters[pokemonKeySimple]?.size) ||
123+
Icons.getSize('invasion')
124+
maxRewardSize = Math.max(maxRewardSize, rewardSize)
125+
}
126+
}
127+
128+
if (gruntData?.secondReward && invasion.slot_2_pokemon_id) {
129+
const pokemonKey = `a${invasion.slot_2_pokemon_id}-${invasion.slot_2_form || 0}`
130+
const pokemonKeySimple = `a${invasion.slot_2_pokemon_id}`
131+
132+
// Only consider this Pokemon's size if it's enabled in filters
133+
if (
134+
filters[pokemonKey]?.enabled ||
135+
filters[pokemonKeySimple]?.enabled
136+
) {
137+
const rewardSize =
138+
Icons.getSize('invasion', filters[pokemonKey]?.size) ||
139+
Icons.getSize('invasion', filters[pokemonKeySimple]?.size) ||
140+
Icons.getSize('invasion')
141+
maxRewardSize = Math.max(maxRewardSize, rewardSize)
142+
}
143+
}
144+
145+
if (gruntData?.thirdReward && invasion.slot_3_pokemon_id) {
146+
const pokemonKey = `a${invasion.slot_3_pokemon_id}-${invasion.slot_3_form || 0}`
147+
const pokemonKeySimple = `a${invasion.slot_3_pokemon_id}`
148+
149+
// Only consider this Pokemon's size if it's enabled in filters
150+
if (
151+
filters[pokemonKey]?.enabled ||
152+
filters[pokemonKeySimple]?.enabled
153+
) {
154+
const rewardSize =
155+
Icons.getSize('invasion', filters[pokemonKey]?.size) ||
156+
Icons.getSize('invasion', filters[pokemonKeySimple]?.size) ||
157+
Icons.getSize('invasion')
158+
maxRewardSize = Math.max(maxRewardSize, rewardSize)
159+
}
160+
}
161+
} else if (gruntData?.encounters) {
162+
// If no confirmed lineup, use all potential rewards from masterfile
163+
// Check first encounter rewards if firstReward is true
164+
if (gruntData.firstReward && gruntData.encounters.first) {
165+
gruntData.encounters.first.forEach((encounter) => {
166+
const pokemonKey = `a${encounter.id}-${encounter.form || 0}`
167+
const pokemonKeySimple = `a${encounter.id}`
115168

116169
// Only consider this Pokemon's size if it's enabled in filters
117170
if (
@@ -130,10 +183,11 @@ export function usePokestopMarker({
130183
})
131184
}
132185

133-
if (gruntData?.secondReward && invasion.encounters.second) {
134-
invasion.encounters.second.forEach((encounter) => {
135-
const pokemonKey = `a${encounter.pokemon_id}-${encounter.pokemon_form || 0}`
136-
const pokemonKeySimple = `a${encounter.pokemon_id}`
186+
// Check second encounter rewards if secondReward is true
187+
if (gruntData.secondReward && gruntData.encounters.second) {
188+
gruntData.encounters.second.forEach((encounter) => {
189+
const pokemonKey = `a${encounter.id}-${encounter.form || 0}`
190+
const pokemonKeySimple = `a${encounter.id}`
137191

138192
// Only consider this Pokemon's size if it's enabled in filters
139193
if (
@@ -152,10 +206,11 @@ export function usePokestopMarker({
152206
})
153207
}
154208

155-
if (gruntData?.thirdReward && invasion.encounters.third) {
156-
invasion.encounters.third.forEach((encounter) => {
157-
const pokemonKey = `a${encounter.pokemon_id}-${encounter.pokemon_form || 0}`
158-
const pokemonKeySimple = `a${encounter.pokemon_id}`
209+
// Check third encounter rewards if thirdReward is true
210+
if (gruntData.thirdReward && gruntData.encounters.third) {
211+
gruntData.encounters.third.forEach((encounter) => {
212+
const pokemonKey = `a${encounter.id}-${encounter.form || 0}`
213+
const pokemonKeySimple = `a${encounter.id}`
159214

160215
// Only consider this Pokemon's size if it's enabled in filters
161216
if (
@@ -173,78 +228,6 @@ export function usePokestopMarker({
173228
}
174229
})
175230
}
176-
} else if (gruntData?.encounters) {
177-
// If no confirmed lineup, use all potential rewards from masterfile
178-
if (gruntData.encounters) {
179-
// Check first encounter rewards if firstReward is true
180-
if (gruntData.firstReward && gruntData.encounters.first) {
181-
gruntData.encounters.first.forEach((encounter) => {
182-
const pokemonKey = `a${encounter.id}-${encounter.form || 0}`
183-
const pokemonKeySimple = `a${encounter.id}`
184-
185-
// Only consider this Pokemon's size if it's enabled in filters
186-
if (
187-
filters[pokemonKey]?.enabled ||
188-
filters[pokemonKeySimple]?.enabled
189-
) {
190-
const rewardSize =
191-
Icons.getSize('invasion', filters[pokemonKey]?.size) ||
192-
Icons.getSize(
193-
'invasion',
194-
filters[pokemonKeySimple]?.size,
195-
) ||
196-
Icons.getSize('invasion')
197-
maxRewardSize = Math.max(maxRewardSize, rewardSize)
198-
}
199-
})
200-
}
201-
202-
// Check second encounter rewards if secondReward is true
203-
if (gruntData.secondReward && gruntData.encounters.second) {
204-
gruntData.encounters.second.forEach((encounter) => {
205-
const pokemonKey = `a${encounter.id}-${encounter.form || 0}`
206-
const pokemonKeySimple = `a${encounter.id}`
207-
208-
// Only consider this Pokemon's size if it's enabled in filters
209-
if (
210-
filters[pokemonKey]?.enabled ||
211-
filters[pokemonKeySimple]?.enabled
212-
) {
213-
const rewardSize =
214-
Icons.getSize('invasion', filters[pokemonKey]?.size) ||
215-
Icons.getSize(
216-
'invasion',
217-
filters[pokemonKeySimple]?.size,
218-
) ||
219-
Icons.getSize('invasion')
220-
maxRewardSize = Math.max(maxRewardSize, rewardSize)
221-
}
222-
})
223-
}
224-
225-
// Check third encounter rewards if thirdReward is true
226-
if (gruntData.thirdReward && gruntData.encounters.third) {
227-
gruntData.encounters.third.forEach((encounter) => {
228-
const pokemonKey = `a${encounter.id}-${encounter.form || 0}`
229-
const pokemonKeySimple = `a${encounter.id}`
230-
231-
// Only consider this Pokemon's size if it's enabled in filters
232-
if (
233-
filters[pokemonKey]?.enabled ||
234-
filters[pokemonKeySimple]?.enabled
235-
) {
236-
const rewardSize =
237-
Icons.getSize('invasion', filters[pokemonKey]?.size) ||
238-
Icons.getSize(
239-
'invasion',
240-
filters[pokemonKeySimple]?.size,
241-
) ||
242-
Icons.getSize('invasion')
243-
maxRewardSize = Math.max(maxRewardSize, rewardSize)
244-
}
245-
})
246-
}
247-
}
248231
}
249232

250233
// Use the maximum size found, or default invasion size if none are enabled

0 commit comments

Comments
 (0)