diff --git a/src/engine/gameManager/LootManager.java b/src/engine/gameManager/LootManager.java index 191913e5..0ba857e4 100644 --- a/src/engine/gameManager/LootManager.java +++ b/src/engine/gameManager/LootManager.java @@ -642,6 +642,74 @@ public enum LootManager { } } + public static void newFatePeddler(PlayerCharacter playerCharacter, Item gift) { + + CharacterItemManager itemMan = playerCharacter.getCharItemManager(); + + if (itemMan == null) + return; + + //check if player owns the gift he is trying to open + + if (!itemMan.doesCharOwnThisItem(gift.getObjectUUID())) + return; + + ItemBase ib = gift.getItemBase(); + + MobLoot winnings = null; + + if (ib == null) + return; + switch (ib.getUUID()) { + case 971070: //wrapped rune + ItemBase runeBase = null; + int roll = ThreadLocalRandom.current().nextInt(static_rune_ids.size() + 1); + int itemId = static_rune_ids.get(0); + try { + itemId = static_rune_ids.get(roll); + }catch(Exception e){ + + } + runeBase = ItemBase.getItemBase(itemId); + if(runeBase != null) { + winnings = new MobLoot(playerCharacter, runeBase, 1, false); + } + break; + case 971012: //wrapped glass + int chance = ThreadLocalRandom.current().nextInt(100); + if(chance == 50){ + ItemBase glassBase =ItemBase.getItemBase(rollRandomItem(126)); + if(glassBase != null) + winnings = new MobLoot(playerCharacter, ib, 1, false); + }else{ + ChatManager.chatSystemInfo(playerCharacter, "Please Try Again!"); + } + break; + } + + if (winnings == null) + return; + + //early exit if the inventory of the player will not hold the item + + if (!itemMan.hasRoomInventory(winnings.getItemBase().getWeight())) { + ErrorPopupMsg.sendErrorPopup(playerCharacter, 21); + return; + } + + winnings.setIsID(true); + + //remove gift from inventory + + itemMan.consume(gift); + + //add winnings to player inventory + + Item playerWinnings = winnings.promoteToItem(playerCharacter); + itemMan.addItemToInventory(playerWinnings); + itemMan.updateInventory(); + + } public static void peddleFate(PlayerCharacter playerCharacter, Item gift) { //get table ID for the itembase ID diff --git a/src/engine/net/client/handlers/ObjectActionMsgHandler.java b/src/engine/net/client/handlers/ObjectActionMsgHandler.java index 045eac10..51dfe204 100644 --- a/src/engine/net/client/handlers/ObjectActionMsgHandler.java +++ b/src/engine/net/client/handlers/ObjectActionMsgHandler.java @@ -424,9 +424,9 @@ public class ObjectActionMsgHandler extends AbstractClientMsgHandler { } break; case 31: - LootManager.peddleFate(player,item); + //LootManager.peddleFate(player,item); + LootManager.newFatePeddler(player,item); break; - case 30: //water bucket case 8: //potions, tears of saedron case 5: //runes, petition, warrant, scrolls diff --git a/src/engine/objects/Contract.java b/src/engine/objects/Contract.java index 3172b27c..1de0aed4 100644 --- a/src/engine/objects/Contract.java +++ b/src/engine/objects/Contract.java @@ -587,6 +587,12 @@ public class Contract extends AbstractGameObject { } } + if(this.getObjectUUID() == 1502050){ + for(MobEquipment me : this.sellInventory){ + me.magicValue = 1000000; + } + } + if(this.getObjectUUID() == 1202){ //rune merchant for(MobEquipment me : this.sellInventory){ switch(me.getItemBase().getUUID()){