@@ -119,11 +119,60 @@ public int execute() throws InterruptedException {
119
119
private void getItemRequirements (final ItemReq ... itemReqs ) {
120
120
final List <ItemReq > itemReqList = Arrays .asList (itemReqs );
121
121
122
- List <ItemReq > equipableItemReqs = itemReqList .stream ().filter (ItemReq ::isEquipable ).collect (Collectors .toList ());
123
- Filter <Item > equipableItemReqFilter = item -> equipableItemReqs .stream ().anyMatch (req -> req .isRequirementItem (item ));
122
+ final List <ItemReq > equipableItemReqs = itemReqList .stream ().filter (ItemReq ::isEquipable ).collect (Collectors .toList ());
123
+ final Filter <Item > equipableItemReqFilter = item -> equipableItemReqs .stream ().anyMatch (req -> req .isRequirementItem (item ));
124
+ final List <ItemReq > nonEquipableItemReqsList = itemReqList .stream ().filter (req -> !req .isEquipable ()).collect (Collectors .toList ());
125
+
126
+ // First we deposit any items that are not a requirement
127
+ execute (new Event () {
128
+ @ Override
129
+ public int execute () throws InterruptedException {
130
+ if (!getInventory ().contains (item -> !itemReqFilter .match (item ))) {
131
+ setFinished ();
132
+ return 0 ;
133
+ }
134
+
135
+ if (!getBank ().isOpen ()) {
136
+ getBank ().open ();
137
+ } else {
138
+ getBank ().depositAllExcept (itemReqFilter );
139
+ }
140
+ return 600 ;
141
+ }
142
+ });
143
+
144
+ // Then we deposit any excess item reqs we have
145
+ execute (new Event () {
146
+ Queue <ItemReq > nonEquipableItemReqs = new LinkedList <>(nonEquipableItemReqsList );
147
+
148
+ @ Override
149
+ public int execute () throws InterruptedException {
150
+ if (nonEquipableItemReqs .isEmpty ()) {
151
+ setFinished ();
152
+ return 0 ;
153
+ }
154
+
155
+ if (!getBank ().isOpen ()) {
156
+ getBank ().open ();
157
+ } else {
158
+ ItemReq itemReq = nonEquipableItemReqs .peek ();
159
+
160
+ int targetAmount = reqTargetAmountMap .get (itemReq );
161
+ long amountOnPlayer = itemReq .getAmount (getInventory (), getEquipment ());
162
+
163
+ if (amountOnPlayer > targetAmount && targetAmount != ItemReq .QUANTITY_ALL ) {
164
+ depositExcess (itemReq );
165
+ } else {
166
+ nonEquipableItemReqs .poll ();
167
+ }
168
+ }
169
+ return 600 ;
170
+ }
171
+ });
172
+
124
173
125
174
if (!equipableItemReqs .isEmpty ()) {
126
- // First we want to withdraw any equipable item reqs
175
+ // Now we want to withdraw any equipable item reqs
127
176
Event withdrawEquipables = execute (new Event () {
128
177
Queue <ItemReq > equipableItemReqQueue = new LinkedList <>(equipableItemReqs );
129
178
@@ -132,7 +181,10 @@ private void getItemRequirements(final ItemReq... itemReqs) {
132
181
public int execute () throws InterruptedException {
133
182
if (equipableItemReqQueue .isEmpty ()) {
134
183
setFinished ();
135
- } else if (!getBank ().isOpen ()) {
184
+ return 0 ;
185
+ }
186
+
187
+ if (!getBank ().isOpen ()) {
136
188
getBank ().open ();
137
189
} else if (getInventory ().contains (item -> !equipableItemReqFilter .match (item ))) {
138
190
getBank ().depositAllExcept (equipableItemReqFilter );
@@ -180,38 +232,35 @@ public int execute() throws InterruptedException {
180
232
});
181
233
}
182
234
183
- final List <ItemReq > nonEquipableItemReqsList = itemReqList .stream ().filter (req -> !req .isEquipable ()).collect (Collectors .toList ());
184
-
185
235
// Finally we want to withdraw any remaining item reqs
186
236
Event withdrawNonEquipableEvent = execute (new Event () {
187
237
Queue <ItemReq > nonEquipableItemReqs = new LinkedList <>(nonEquipableItemReqsList );
188
238
189
239
@ Override
190
240
public int execute () throws InterruptedException {
241
+ if (nonEquipableItemReqs .isEmpty ()) {
242
+ setFinished ();
243
+ return 0 ;
244
+ }
245
+
191
246
if (!getBank ().isOpen ()) {
192
247
getBank ().open ();
193
- } else if (getInventory ().contains (item -> !itemReqFilter .match (item ))) {
194
- getBank ().depositAllExcept (itemReqFilter );
195
- } else if (nonEquipableItemReqs .isEmpty ()) {
196
- setFinished ();
197
- } else {
198
- ItemReq itemReq = nonEquipableItemReqs .peek ();
248
+ return 0 ;
249
+ }
199
250
200
- int targetAmount = reqTargetAmountMap .get (itemReq );
201
- long amountOnPlayer = itemReq .getAmount (getInventory (), getEquipment ());
251
+ ItemReq itemReq = nonEquipableItemReqs .peek ();
202
252
203
- if (amountOnPlayer > targetAmount && targetAmount != ItemReq .QUANTITY_ALL ) {
204
- depositExcess (itemReq );
205
- } else if (!itemReq .hasRequirement (getInventory (), getEquipment ())) {
206
- if (!withdrawItemReq (itemReq )) {
207
- setFailed ();
208
- }
209
- } else if (amountOnPlayer < targetAmount && getBank ().contains (itemReq .getName ())) {
210
- withdrawItemReq (itemReq );
211
- } else {
212
- nonEquipableItemReqs .poll ();
253
+ int targetAmount = reqTargetAmountMap .get (itemReq );
254
+ long amountOnPlayer = itemReq .getAmount (getInventory (), getEquipment ());
255
+
256
+ if (amountOnPlayer < targetAmount ) {
257
+ if (!withdrawItemReq (itemReq )) {
258
+ setFailed ();
213
259
}
260
+ } else {
261
+ nonEquipableItemReqs .poll ();
214
262
}
263
+
215
264
return 600 ;
216
265
}
217
266
});
0 commit comments