mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-13 15:34:40 +01:00
Little update to item giving handling (#2363)
* Little update to HandlerItemGivingReq.java GIVING_METHOD_GROUP is used in cooking girl's quest * Send the giving packet at the start of relogs, even if encountered before. * Make item checking not exact You can have more items in your inventory than what you are submitting.
This commit is contained in:
@@ -216,14 +216,14 @@ public class Inventory extends BasePlayerManager implements Iterable<GameItem> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks to see if the player has the item in their inventory. This is exact.
|
* Checks to see if the player has the item in their inventory. This is not exact.
|
||||||
*
|
*
|
||||||
* @param items A map of item game IDs to their count.
|
* @param items A map of item game IDs to their count.
|
||||||
* @return True if the player has the items, false otherwise.
|
* @return True if the player has the items, false otherwise.
|
||||||
*/
|
*/
|
||||||
public boolean hasAllItems(Collection<ItemParam> items) {
|
public boolean hasAllItems(Collection<ItemParam> items) {
|
||||||
for (var item : items) {
|
for (var item : items) {
|
||||||
if (!this.hasItem(item.getItemId(), item.getCount(), true)) return false;
|
if (!this.hasItem(item.getItemId(), item.getCount(), false)) return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -101,22 +101,17 @@ public final class QuestManager extends BasePlayerManager {
|
|||||||
* Attempts to add the giving action.
|
* Attempts to add the giving action.
|
||||||
*
|
*
|
||||||
* @param givingId The giving action ID.
|
* @param givingId The giving action ID.
|
||||||
* @throws IllegalStateException If the giving action is already active.
|
|
||||||
*/
|
*/
|
||||||
public void addGiveItemAction(int givingId) throws IllegalStateException {
|
public void addGiveItemAction(int givingId) throws IllegalStateException {
|
||||||
var progress = this.player.getPlayerProgress();
|
var progress = this.player.getPlayerProgress();
|
||||||
var givings = progress.getItemGivings();
|
var givings = progress.getItemGivings();
|
||||||
|
|
||||||
// Check if the action is already present.
|
// Check if the action is not present.
|
||||||
if (givings.containsKey(givingId)) {
|
if (!givings.containsKey(givingId)) {
|
||||||
throw new IllegalStateException("Giving action " + givingId + " is already active.");
|
givings.put(givingId, ItemGiveRecord.resolve(givingId));
|
||||||
|
player.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the action.
|
|
||||||
givings.put(givingId, ItemGiveRecord.resolve(givingId));
|
|
||||||
// Save the givings.
|
|
||||||
player.save();
|
|
||||||
|
|
||||||
this.sendGivingRecords();
|
this.sendGivingRecords();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public final class HandlerItemGivingReq extends PacketHandler {
|
|||||||
questManager.queueEvent(QuestContent.QUEST_CONTENT_FINISH_ITEM_GIVING, giveId, 0);
|
questManager.queueEvent(QuestContent.QUEST_CONTENT_FINISH_ITEM_GIVING, giveId, 0);
|
||||||
questManager.queueEvent(QuestCond.QUEST_COND_ITEM_GIVING_FINISHED, giveId, 0);
|
questManager.queueEvent(QuestCond.QUEST_COND_ITEM_GIVING_FINISHED, giveId, 0);
|
||||||
}
|
}
|
||||||
case GIVING_METHOD_VAGUE_GROUP -> {
|
case GIVING_METHOD_VAGUE_GROUP, GIVING_METHOD_GROUP -> {
|
||||||
var matchedGroups = new ArrayList<Integer>();
|
var matchedGroups = new ArrayList<Integer>();
|
||||||
var givenItems = new HashMap<Integer, Integer>();
|
var givenItems = new HashMap<Integer, Integer>();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user