31
31
"Whispering Creek" : 4 / 15 ,
32
32
"Jundland Desert" : 4 / 15 ,
33
33
"Haunted House" : 2 / 5 ,
34
+ "Santa's Workshop" : 2 / 5 ,
34
35
}
35
36
36
37
CACHE_PATH_BASE = f"{ os .path .dirname (__file__ )} /.dropscache/{ '{}' } .json"
54
55
"Egg 03" : "Carrot Seeds" ,
55
56
"Popcorn" : "Corn Seeds" ,
56
57
"Gold Potato" : "Potato Seeds" ,
58
+ "Frozen Pine" : "Pine Seeds" ,
59
+ "Frozen Cabbage" : "Cabbage Seeds" ,
60
+ "Frozen Peas" : "Pea Seeds" ,
57
61
}
58
62
59
63
# When the Iron Depot drop change went live.
80
84
# Drop log types which are immune from the runecube perk.
81
85
RUNECUBE_IMMUNE_TYPES = {"harvestall" }
82
86
87
+ # Timestamp for when the new drop code went into effect.
88
+ NEW_DROP_CODE = 1667244595000
89
+
90
+ # Timestamp for when xmas 2022 started (for snowball drops)
91
+ XMAS_2022 = 1669874400000
92
+ XMAS_2022_END = 1672801200000
93
+
83
94
84
95
def cache_path_for (** kwargs ) -> str :
85
96
buf = io .StringIO ()
@@ -109,6 +120,9 @@ def when_dropped(item: fixtures.Item, location: fixtures.Location) -> range:
109
120
if item .name == "Popcorn" and location .name == "Corn Seeds" :
110
121
# September 12th, time unknown so saying midnight for simplicity.
111
122
first_dropped = 1662958800000
123
+ if item .name == "Snowball" :
124
+ first_dropped = XMAS_2022
125
+ last_dropped = XMAS_2022_END
112
126
last_dropped = item .last_dropped or round ((time .time () + 10000000 ) * 1000 )
113
127
return range (first_dropped , last_dropped + 1 )
114
128
@@ -194,16 +208,20 @@ def count_sources(
194
208
nets_fake_fishes : bool = False ,
195
209
cider_location : Optional [str ] = None ,
196
210
) -> None :
211
+ mult = row .get ("results" , {}).get ("mult" , 1 )
197
212
if row ["type" ] == "explore" :
213
+ assert mult == 1
198
214
drops .explores += row ["results" ]["stamina" ]
199
215
elif row ["type" ] == "lemonade" :
216
+ assert mult == 1
200
217
drops .lemonades += 1
201
218
if lemonade_fake_explores_location is not None :
202
219
drops .explores += round (
203
220
(1 / BASE_DROP_RATES [lemonade_fake_explores_location ])
204
221
* sum (it .get ("quantity" , 1 ) for it in row ["results" ]["items" ])
205
222
)
206
223
elif row ["type" ] == "cider" :
224
+ # assert mult == 1
207
225
drops .ciders += 1
208
226
cider_explores = row ["results" ]["explores" ]
209
227
if row ["ts" ] >= CIDER_CHANGE :
@@ -217,22 +235,26 @@ def count_sources(
217
235
# for all items but it's more correct than not.
218
236
drops .explores += cider_explores
219
237
elif row ["type" ] == "palmer" :
238
+ assert mult == 1
220
239
drops .palmers += 1
221
240
if lemonade_fake_explores_location is not None :
222
241
drops .explores += round (
223
242
(1 / BASE_DROP_RATES [lemonade_fake_explores_location ]) * 500
224
243
)
225
244
elif row ["type" ] == "fish" :
245
+ assert mult == 1
226
246
drops .fishes += 1
227
247
elif row ["type" ] == "net" :
248
+ # assert mult == 1
228
249
drops .nets += 1
229
250
if nets_fake_fishes :
230
251
drops .fishes += sum (it .get ("quantity" , 1 ) for it in row ["results" ]["items" ])
231
252
elif row ["type" ] == "large_net" :
232
- drops .large_nets += 1
253
+ drops .large_nets += mult
233
254
if nets_fake_fishes :
234
- drops .fishes += 500 if row ["ts" ] >= TRIGON_KNOT else 400
255
+ drops .fishes += ( 500 if row ["ts" ] >= TRIGON_KNOT else 400 ) * mult
235
256
elif row ["type" ] == "harvestall" :
257
+ assert mult == 1
236
258
# We already checked that only mono-seed logs are considered.
237
259
drops .harvests += len (row ["results" ]["crops" ])
238
260
0 commit comments