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
@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) {
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) {
GameItem item = this.getMaterialByItemId(uid);

View File

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