Implement /ClearRelics command

This commit is contained in:
Melledy
2023-10-05 03:46:17 -07:00
parent 3bb7b59ea7
commit d4173607df
3 changed files with 31 additions and 10 deletions

View File

@@ -183,6 +183,21 @@ public class PlayerCommands {
} }
} }
} }
@Command(desc = "/clearrelics")
public static class ClearRelics extends PlayerCommand {
@Override
public void execute(Player player, String raw) {
List<GameItem> toRemove = new LinkedList<>();
for (GameItem item : player.getInventory().getItems().values()) {
if (item.getItemMainType() == ItemMainType.Relic && item.getLevel() <= 1 && item.getExp() == 0 && !item.isLocked() && !item.isEquipped()) {
toRemove.add(item);
}
}
player.getInventory().removeItems(toRemove);
}
}
/* Temporarily disabled as spawned monsters need /* Temporarily disabled as spawned monsters need
@Command(desc = "/spawn [monster id] [count] - Creates {count} amount of {item id}") @Command(desc = "/spawn [monster id] [count] - Creates {count} amount of {item id}")

View File

@@ -216,7 +216,7 @@ public class Inventory extends BasePlayerManager {
} }
} }
public synchronized void removeItems(Collection<ItemParam> items) { public synchronized void removeItemsByParams(Collection<ItemParam> items) {
for (ItemParam param : items) { for (ItemParam param : items) {
GameItem item = this.getItemByParam(param); GameItem item = this.getItemByParam(param);
@@ -225,6 +225,12 @@ public class Inventory extends BasePlayerManager {
} }
} }
} }
public synchronized void removeItems(Collection<GameItem> items) {
for (GameItem item : items) {
this.removeItem(item, item.getCount());
}
}
public synchronized boolean removePileItem(int uid, int count) { public synchronized boolean removePileItem(int uid, int count) {
GameItem item = this.getMaterialByItemId(uid); GameItem item = this.getMaterialByItemId(uid);

View File

@@ -55,7 +55,7 @@ public class InventoryService extends BaseGameService {
} }
// Pay items // Pay items
player.getInventory().removeItems(items); player.getInventory().removeItemsByParams(items);
player.addSCoin(-cost); player.addSCoin(-cost);
// Level up // Level up
@@ -118,7 +118,7 @@ public class InventoryService extends BaseGameService {
} }
// Pay items // Pay items
player.getInventory().removeItems(promotion.getPromotionCostList()); player.getInventory().removeItemsByParams(promotion.getPromotionCostList());
player.addSCoin(-promotion.getPromotionCostCoin()); player.addSCoin(-promotion.getPromotionCostCoin());
// Promote // Promote
@@ -161,7 +161,7 @@ public class InventoryService extends BaseGameService {
} }
// Pay items // Pay items
player.getInventory().removeItems(skillTree.getMaterialList()); player.getInventory().removeItemsByParams(skillTree.getMaterialList());
player.addSCoin(-skillTree.getMaterialCostCoin()); player.addSCoin(-skillTree.getMaterialCostCoin());
// Add skill // Add skill
@@ -198,7 +198,7 @@ public class InventoryService extends BaseGameService {
} }
// Pay items // Pay items
player.getInventory().removeItems(rankData.getUnlockCost()); player.getInventory().removeItemsByParams(rankData.getUnlockCost());
// Add rank // Add rank
avatar.setRank(avatar.getRank() + 1); avatar.setRank(avatar.getRank() + 1);
@@ -254,7 +254,7 @@ public class InventoryService extends BaseGameService {
} }
// Pay items // Pay items
player.getInventory().removeItems(items); player.getInventory().removeItemsByParams(items);
player.addSCoin(-cost); player.addSCoin(-cost);
// Level up // Level up
@@ -325,7 +325,7 @@ public class InventoryService extends BaseGameService {
} }
// Pay items // Pay items
player.getInventory().removeItems(promotion.getPromotionCostList()); player.getInventory().removeItemsByParams(promotion.getPromotionCostList());
player.addSCoin(-promotion.getPromotionCostCoin()); player.addSCoin(-promotion.getPromotionCostCoin());
// Promote // Promote
@@ -358,7 +358,7 @@ public class InventoryService extends BaseGameService {
} }
// Pay items // Pay items
player.getInventory().removeItems(items); player.getInventory().removeItemsByParams(items);
// Add rank // Add rank
equip.setRank(Math.min(equip.getRank() + items.size(), equip.getExcel().getEquipmentExcel().getMaxRank())); equip.setRank(Math.min(equip.getRank() + items.size(), equip.getExcel().getEquipmentExcel().getMaxRank()));
@@ -409,7 +409,7 @@ public class InventoryService extends BaseGameService {
} }
// Pay items // Pay items
player.getInventory().removeItems(items); player.getInventory().removeItemsByParams(items);
player.addSCoin(-cost); player.addSCoin(-cost);
// Level up // Level up
@@ -493,7 +493,7 @@ public class InventoryService extends BaseGameService {
} }
// Delete items // Delete items
player.getInventory().removeItems(items); player.getInventory().removeItemsByParams(items);
// Add return items // Add return items
for (var returnItem : returnItems.int2IntEntrySet()) { for (var returnItem : returnItems.int2IntEntrySet()) {