fix resource drops

This commit is contained in:
2025-03-29 20:28:38 -05:00
parent ff20c1ed7e
commit 4ab053ec82
2 changed files with 115 additions and 107 deletions
@@ -82,6 +82,20 @@ public class SpecialLootHandler {
1452,1500,1502,1525,1527,1550,1552,1575,1577,1600,1602,1650,1652,1700,980100,
980102
);
public static final List<Integer> gold_resources = Arrays.asList(
1580000, 1580008, 1580009, 1580010, 1580011, 1580017
);
public static final List<Integer> lumber_resources = Arrays.asList(
1580004, 1580005, 1580006, 1580007, 1580018
);
public static final List<Integer> ore_resources = Arrays.asList(
1580000, 1580001, 1580002, 1580003, 1580019
);
public static final List<Integer> magic_resources = Arrays.asList(
1580012, 1580013, 1580014, 1580015, 1580016, 1580020
);
public static void RollContract(Mob mob){
Zone zone = getMacroZone(mob);
if(zone == null)
@@ -246,4 +260,99 @@ public class SpecialLootHandler {
MobLoot guard = new MobLoot(mob,guardBase,false);
mob.getCharItemManager().addItemToInventory(guard);
}
public static void ResourceDrop(Mob mob){
Zone zone = getMacroZone(mob);
if(zone == null)
return;
int resourceId = 0;
int roll = ThreadLocalRandom.current().nextInt(125);
if(roll == 75){
resourceId = getResourceForZone(zone);
}
if(resourceId == 0)
return;
ItemBase resourceBase = ItemBase.getItemBase(resourceId);
if(resourceBase == null)
return;
if(mob.getCharItemManager() == null)
return;
MobLoot resource = new MobLoot(mob,resourceBase,false);
int stackMax = (int)(Warehouse.maxResources.get(resourceId) * 0.02f);
if(stackMax > 100)
stackMax = 100;
resource.setNumOfItems(ThreadLocalRandom.current().nextInt(stackMax));
mob.getCharItemManager().addItemToInventory(resource);
}
public static int getResourceForZone(Zone zone){
Random random = new Random();
switch (zone.getObjectUUID())
{
case 178:
case 717:
case 632:
case 952:
case 475:
case 371:
case 313:
case 234:
// Ecklund Wilds // ORE MINE
// Greensward Pyre // ORE MINE
// The Black Bog // ORE MINE
// Phaedra's Prize // ORE MINE
//plain of ashes ORE MINE
// Ashfell Plain // ORE MINE
// Kharsoom // ORE MINE
// Kralgaar Holm // ORE MINE
return ore_resources.get(random.nextInt(ore_resources.size()));
case 122:
case 824:
case 737:
case 569:
case 590:
case 437:
case 388:
// Sevaath Mere // LUMBER MINE
// Grimscairne // LUMBER MINE
// Fellgrim Forest // LUMBER MINE
// Aedroch Highlands // LUMBER MINE
// Leth'khalivar Desert // LUMBER MINE
// Western Battleground // LUMBER MINE
// Aurrochs Skrae // LUMBER MINE
return lumber_resources.get(random.nextInt(lumber_resources.size()));
case 197:
case 761:
case 616:
case 951:
case 532:
case 491:
case 353:
case 331:
// The Doomplain // GOLD MINE
// Thollok Marsh // GOLD MINE
// Holloch Forest // GOLD MINE
// Tainted Swamp // GOLD MINE
//Bone Marches // GOLD MINE
// Derros Plains // GOLD MINE
// The Blood Sands // GOLD MINE
// Ymur's Crown // GOLD MINE
return gold_resources.get(random.nextInt(gold_resources.size()));
case 418:
case 842:
case 785:
case 550:
case 508:
// Aeran Belendor // MAGIC MINE
// Aerath Hellendroth // MAGIC MINE
// Vale of Nar Addad // MAGIC MINE
// Pandemonium // MAGIC MINE
// Valkos Wilds // MAGIC MINE
return magic_resources.get(random.nextInt(magic_resources.size()));
}
return 0;
}
}