Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### Eclipse Workspace Patch 1.0
- #P aCis_gameserver
- Index: java/net/sf/l2j/donation/DonationDyes.java
- ===================================================================
- --- java/net/sf/l2j/donation/DonationDyes.java (nonexistent)
- +++ java/net/sf/l2j/donation/DonationDyes.java (working copy)
- @@ -0,0 +1,78 @@
- +package net.sf.l2j.donation;
- +
- +import java.util.Arrays;
- +
- +/**
- + * @author Melron
- + */
- +class DonationDyes
- +{
- + public enum AutoDyes
- + {
- + /** (id,symbolId,symbolId,symbolId) symbols can be found at data/xml/hennas.xml*/
- + NONE(-1, -1, -1, -1),
- + DUELIST(88, 158, 146, 172), // +3str -3dex / +2str -2dex / +4con -4dex
- + DREADNOUGHT(89, 173, 171, -1), // +4dex -4str / +4con -4str
- + PHOENIX_KNIGHT(90, 171, -1, -1), // +4con -4str
- + HELL_KNIGHT(91, 170, 172, -1), // +4str -4dex / +4con -4dex
- + SAGGITARIUS(92, 174, -1, -1), // +4dex -4con
- + ADVENTURER(93, 173, 171, -1), // +4dex -4str / +4con -4str
- + ARCHMAGE(94, 180, 175, 171), // +4wit -4men / +4int -4men / +4con -4str
- + SOULTAKER(95, 180, 175, 171), // +4wit -4men / +4int -4men / +4con -4str
- + ARCANA_LORD(96, 180, 175, 171), // +4wit -4men / +4int -4men / +4con -4str
- + CARDINAL(97, 180, -1, 171), // +4wit -4men / +4con -4str
- + HIEROPHANT(98, 180, -1, 171), // +4wit -4men / +4con -4str
- +
- + EVAS_TEMPLAR(99, 170, 172, -1), // +4str -4dex / +4con -4dex
- + SWORD_MUSE(100, 170, 148, -1), // +4str -4dex / +2con -2dex
- + WIND_RIDER(101, 171, 173, -1), // +4con -4str / +4dex -4str
- + MOONLIGHT_SENTINEL(102, 169, 179, -1), // +4str -4con / +4wit -4int
- + MYSTIC_MUSE(103, 180, 175, 171), // +4wit -4men / +4int -4men / +4con -4str
- + ELEMENTAL_MASTER(104, 180, 175, -1), // +4wit -4men / +4int -4men
- + EVAS_SAINT(105, 180, 171, -1), // +4wit -4men / +4con -4str
- +
- + SHILLIEN_TEMPLAR(106, 170, 172, -1), // +4str -4dex / +4con -4dex
- + SPECTRAL_DANCER(107, 170, 172, -1), // +4str -4dex / +4con -4dex
- + GHOST_HUNTER(108, 173, 171, -1), // +4dex -4str / +4con -4str
- + GHOST_SENTINEL(109, 169, 174, -1), // +4str -4con / +4dex -4con
- + STORM_SCREAMER(110, 180, 175, 171), // +4wit -4men / +4int -4men / +4con -4str
- + SPECTRAL_MASTER(111, 180, 175, -1), // +4wit -4men / +4int -4men
- + SHILLIEN_SAINT(112, 180, 171, -1), // +4wit -4men / +4con -4str
- +
- + TITAN(113, 170, -1, -1), // +4con -4dex
- + GRAND_KHAVATARI(114, 169, -1, -1), // +4str -4con
- + DOMINATOR(115, 180, 171, -1), // +4wit -4men / +4con -4str
- + DOOMCRYER(116, 180, 171, -1), // +4wit -4men / +4con -4str
- +
- + FORTUNE_SEEKER(117, 174, -1, -1), // +4dex -4con
- + MAESTRO(118, 174, -1, -1);// +4dex -4con
- +
- + private int _classId;
- + private int[] _dyes = new int[3];
- +
- + private AutoDyes(int classId, int dye1, int dye2, int dye3)
- + {
- + _classId = classId;
- + _dyes[0] = dye1;
- + _dyes[1] = dye2;
- + _dyes[2] = dye3;
- + }
- +
- + public int getId()
- + {
- + return _classId;
- + }
- +
- + public int[] getDyes()
- + {
- + return _dyes;
- + }
- +
- + public static AutoDyes find(int val)
- + {
- + return Arrays.asList(AutoDyes.values()).stream().filter(e -> e.getId() == val).findFirst().orElse(AutoDyes.NONE);
- + }
- + }
- +
- +}
- Index: java/net/sf/l2j/donation/DonationHolder.java
- ===================================================================
- --- java/net/sf/l2j/donation/DonationHolder.java (nonexistent)
- +++ java/net/sf/l2j/donation/DonationHolder.java (working copy)
- @@ -0,0 +1,41 @@
- +package net.sf.l2j.donation;
- +
- +import java.util.Collection;
- +import java.util.HashMap;
- +import java.util.Map;
- +
- +public enum DonationHolder
- +{
- + INSTANCE;
- + private Map<Integer, DonationPackage> donates;
- +
- + DonationHolder()
- + {
- + donates = new HashMap<>();
- + }
- +
- + public void add(int pos, DonationPackage packet)
- + {
- + donates.put(pos, packet);
- + }
- +
- + public int getSize()
- + {
- + return donates.size();
- + }
- +
- + public DonationPackage get(int val)
- + {
- + return donates.get(val);
- + }
- +
- + public Collection<DonationPackage> getPackages()
- + {
- + return donates.values();
- + }
- +
- + public void clear()
- + {
- + donates.clear();
- + }
- +}
- Index: java/net/sf/l2j/donation/DonationItem.java
- ===================================================================
- --- java/net/sf/l2j/donation/DonationItem.java (nonexistent)
- +++ java/net/sf/l2j/donation/DonationItem.java (working copy)
- @@ -0,0 +1,33 @@
- +package net.sf.l2j.donation;
- +
- +/**
- + * A generic int/int container.
- + */
- +public class DonationItem
- +{
- + private final int _id;
- + private final int _count;
- + private final int _enchant;
- +
- + public DonationItem(int id, int count, int enchant)
- + {
- + _id = id;
- + _count = count;
- + _enchant = enchant;
- + }
- +
- + public int getId()
- + {
- + return _id;
- + }
- +
- + public int getCount()
- + {
- + return _count;
- + }
- +
- + public int getEnchant()
- + {
- + return _enchant;
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/donation/DonationMisc.java
- ===================================================================
- --- java/net/sf/l2j/donation/DonationMisc.java (nonexistent)
- +++ java/net/sf/l2j/donation/DonationMisc.java (working copy)
- @@ -0,0 +1,41 @@
- +package net.sf.l2j.donation;
- +
- +public class DonationMisc
- +{
- + private final boolean _noblesse;
- + private final boolean _autoDyes;
- + private final int _rec;
- +
- + public DonationMisc(boolean noblesse, boolean autoDyes, int rec)
- + {
- + _noblesse = noblesse;
- + _autoDyes = autoDyes;
- + _rec = rec;
- + }
- +
- + public boolean isEmpty()
- + {
- + return !_noblesse && _rec <= 0 && !_autoDyes;
- + }
- +
- + public boolean haveNoblesse()
- + {
- + return _noblesse;
- + }
- +
- + public boolean haveRec()
- + {
- + return _rec > 0;
- + }
- +
- + public boolean haveDyes()
- + {
- + return _autoDyes;
- + }
- +
- + public int getRecs()
- + {
- + return _rec;
- + }
- +
- +}
- Index: java/net/sf/l2j/donation/DonationPackage.java
- ===================================================================
- --- java/net/sf/l2j/donation/DonationPackage.java (nonexistent)
- +++ java/net/sf/l2j/donation/DonationPackage.java (working copy)
- @@ -0,0 +1,136 @@
- +package net.sf.l2j.donation;
- +
- +import java.util.List;
- +
- +import net.sf.l2j.donation.DonationDyes.AutoDyes;
- +import net.sf.l2j.gameserver.data.ItemTable;
- +import net.sf.l2j.gameserver.data.xml.HennaData;
- +import net.sf.l2j.gameserver.model.actor.instance.Player;
- +import net.sf.l2j.gameserver.model.item.Henna;
- +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- +import net.sf.l2j.gameserver.network.serverpackets.SocialAction;
- +
- +public abstract class DonationPackage
- +{
- + private final int _cost;
- + private final List<DonationItem> _items;
- + private final DonationMisc _misc;
- +
- + public DonationPackage(int cost,List<DonationItem> items,DonationMisc misc)
- + {
- + _cost = cost;
- + _items = items;
- + _misc = misc;
- + }
- +
- + public boolean haveMisc()
- + {
- + return !_misc.isEmpty();
- + }
- +
- + public List<DonationItem> getItems()
- + {
- + return _items;
- + }
- +
- + public int getCost()
- + {
- + return _cost;
- + }
- +
- + public String getPackage()
- + {
- + return this.getClass().getSimpleName();
- + }
- +
- + public void applyImprovements(Player player)
- + {
- + handleNoblessMisc(player);
- + handleRecMisc(player);
- + handleDyesMisc(player);
- + }
- +
- + private void handleDyesMisc(Player player)
- + {
- + if (_misc.haveDyes())
- + drawDyes(player);
- + }
- +
- + private void handleRecMisc(Player player)
- + {
- + if (_misc.haveRec())
- + {
- + player.setRecomHave(_misc.getRecs());
- + player.broadcastUserInfo();
- + }
- + }
- +
- + private void handleNoblessMisc(Player player)
- + {
- + if (!_misc.haveNoblesse())
- + return;
- +
- + player.setNoble(true, true);
- + player.broadcastPacket(new SocialAction(player, 16));
- + player.sendMessage("You granted with noblesse status!");
- + }
- +
- + public DonationMisc getMisc()
- + {
- + return _misc;
- + }
- +
- + private static void drawDyes(Player player)
- + {
- + removeOldDyes(player);
- + AutoDyes availableDyes = AutoDyes.find(player.getClassId().getId());
- +
- + if (availableDyes == AutoDyes.NONE)
- + return;
- +
- + applyDyesToPlayer(player, availableDyes);
- +
- + }
- +
- + private static void applyDyesToPlayer(Player player, AutoDyes availableDyes)
- + {
- + for (final int symbolId : availableDyes.getDyes())
- + {
- + if (symbolId == -1)
- + continue;
- + final Henna henna = HennaData.getInstance().getHenna(symbolId);
- + if (henna.canBeUsedBy(player))
- + player.addHenna(henna);
- + }
- + }
- +
- + private static void removeOldDyes(Player player)
- + {
- + for (int i = 1; i <= 3; i++)
- + {
- + final Henna henna = player.getHenna(i);
- + if (henna != null)
- + player.removeHenna(i);
- + }
- + }
- +
- + public void reward(Player player)
- + {
- + for (final DonationItem itemInfo : getItems())
- + {
- + final ItemInstance item = ItemTable.getInstance().createItem("donation", itemInfo.getId(), itemInfo.getCount(), player, null);
- + if (item == null)
- + {
- + System.out.println("Incorect item with id " + itemInfo.getId());
- + continue;
- + }
- +
- + if (itemInfo.getEnchant() > 0)
- + item.setEnchantLevel(itemInfo.getEnchant());
- + player.addItem("donation", item, null, true);
- + }
- + if (haveMisc())
- + applyImprovements(player);
- + }
- +
- +}
- Index: java/net/sf/l2j/donation/DonationStats.java
- ===================================================================
- --- java/net/sf/l2j/donation/DonationStats.java (nonexistent)
- +++ java/net/sf/l2j/donation/DonationStats.java (working copy)
- @@ -0,0 +1,112 @@
- +package net.sf.l2j.donation;
- +
- +import java.io.File;
- +import java.lang.reflect.Constructor;
- +import java.util.ArrayList;
- +import java.util.List;
- +import java.util.logging.Level;
- +import java.util.logging.Logger;
- +
- +import net.sf.l2j.commons.data.xml.XMLDocument;
- +
- +import org.w3c.dom.Document;
- +import org.w3c.dom.NamedNodeMap;
- +import org.w3c.dom.Node;
- +
- +public class DonationStats extends XMLDocument
- +{
- + private static Logger _log = Logger.getLogger(DonationStats.class.getName());
- +
- + public DonationStats()
- + {
- + load();
- + }
- +
- + @Override
- + protected void load()
- + {
- + loadDocument("./data/xml/donatePackets.xml");
- + }
- +
- + @Override
- + protected void parseDocument(Document doc, File f)
- + {
- + final Node n = doc.getFirstChild();
- + int pos = 0;
- + for (Node o = n.getFirstChild(); o != null; o = o.getNextSibling())
- + {
- + if (!"Donation".equalsIgnoreCase(o.getNodeName()))
- + continue;
- +
- + final String category = o.getAttributes().getNamedItem("category").getNodeValue() + "Package";
- + final int price = Integer.parseInt(o.getAttributes().getNamedItem("price").getNodeValue());
- +
- + assert price > 0 : " Price " + price;
- +
- + final List<DonationItem> items = new ArrayList<>();
- + boolean noblesse = false;
- + boolean autoDyes = false;
- + int rec = 0;
- +
- + for (Node d = o.getFirstChild(); d != null; d = d.getNextSibling())
- + {
- + if (!d.getNodeName().equalsIgnoreCase("Package"))
- + continue;
- +
- + final NamedNodeMap attrs = d.getAttributes();
- +
- + if (attrs.getNamedItem("item") != null)
- + {
- + final String[] item = attrs.getNamedItem("item").getNodeValue().split(",");
- + int enchant = 0;
- +
- + if (attrs.getNamedItem("enchant") != null)
- + enchant = Integer.parseInt(attrs.getNamedItem("enchant").getNodeValue());
- +
- + items.add(new DonationItem(Integer.parseInt(item[0]), Integer.parseInt(item[1]), enchant));
- + }
- +
- + else if (attrs.getNamedItem("noblesse") != null)
- + noblesse = Boolean.parseBoolean(attrs.getNamedItem("noblesse").getNodeValue());
- +
- + else if (attrs.getNamedItem("autoDyes") != null)
- + autoDyes = Boolean.parseBoolean(attrs.getNamedItem("autoDyes").getNodeValue());
- +
- + else if (attrs.getNamedItem("rec") != null)
- + rec = Integer.parseInt(attrs.getNamedItem("rec").getNodeValue());
- + }
- + try
- + {
- + Constructor<?> _constructor = Class.forName("net.sf.l2j.donation.packages." + category).getConstructors()[0];
- + DonationHolder.INSTANCE.add(pos++, (DonationPackage) _constructor.newInstance(price, items, new DonationMisc(noblesse, autoDyes, rec)));
- +
- + }
- + catch (Exception e)
- + {
- + _log.log(Level.SEVERE, "Could not parse donatePackets.xml", e);
- + }
- + }
- + }
- +
- + public static DonationStats getInstance()
- + {
- + return SingletonHolder._instance;
- + }
- +
- + private static class SingletonHolder
- + {
- + protected static final DonationStats _instance = new DonationStats();
- + }
- +
- + public int size()
- + {
- + return DonationHolder.INSTANCE.getSize();
- + }
- +
- + public void reload()
- + {
- + DonationHolder.INSTANCE.clear();
- + load();
- + }
- +
- +}
- Index: java/net/sf/l2j/donation/packages/BronzePackage.java
- ===================================================================
- --- java/net/sf/l2j/donation/packages/BronzePackage.java (nonexistent)
- +++ java/net/sf/l2j/donation/packages/BronzePackage.java (working copy)
- @@ -0,0 +1,15 @@
- +package net.sf.l2j.donation.packages;
- +
- +import java.util.List;
- +
- +import net.sf.l2j.donation.DonationItem;
- +import net.sf.l2j.donation.DonationMisc;
- +import net.sf.l2j.donation.DonationPackage;
- +
- +public class BronzePackage extends DonationPackage
- +{
- + public BronzePackage(int cost, List<DonationItem> items, DonationMisc misc)
- + {
- + super(cost, items, misc);
- + }
- +}
- Index: java/net/sf/l2j/donation/packages/DiamondPackage.java
- ===================================================================
- --- java/net/sf/l2j/donation/packages/DiamondPackage.java (nonexistent)
- +++ java/net/sf/l2j/donation/packages/DiamondPackage.java (working copy)
- @@ -0,0 +1,15 @@
- +package net.sf.l2j.donation.packages;
- +
- +import java.util.List;
- +
- +import net.sf.l2j.donation.DonationItem;
- +import net.sf.l2j.donation.DonationMisc;
- +import net.sf.l2j.donation.DonationPackage;
- +
- +public class DiamondPackage extends DonationPackage
- +{
- + public DiamondPackage(int cost, List<DonationItem> items, DonationMisc misc)
- + {
- + super(cost, items, misc);
- + }
- +}
- Index: java/net/sf/l2j/donation/packages/GoldPackage.java
- ===================================================================
- --- java/net/sf/l2j/donation/packages/GoldPackage.java (nonexistent)
- +++ java/net/sf/l2j/donation/packages/GoldPackage.java (working copy)
- @@ -0,0 +1,15 @@
- +package net.sf.l2j.donation.packages;
- +
- +import java.util.List;
- +
- +import net.sf.l2j.donation.DonationItem;
- +import net.sf.l2j.donation.DonationMisc;
- +import net.sf.l2j.donation.DonationPackage;
- +
- +public class GoldPackage extends DonationPackage
- +{
- + public GoldPackage(int cost, List<DonationItem> items, DonationMisc misc)
- + {
- + super(cost, items, misc);
- + }
- +}
- Index: java/net/sf/l2j/donation/packages/GrandmasterPackage.java
- ===================================================================
- --- java/net/sf/l2j/donation/packages/GrandmasterPackage.java (nonexistent)
- +++ java/net/sf/l2j/donation/packages/GrandmasterPackage.java (working copy)
- @@ -0,0 +1,15 @@
- +package net.sf.l2j.donation.packages;
- +
- +import java.util.List;
- +
- +import net.sf.l2j.donation.DonationItem;
- +import net.sf.l2j.donation.DonationMisc;
- +import net.sf.l2j.donation.DonationPackage;
- +
- +public class GrandmasterPackage extends DonationPackage
- +{
- + public GrandmasterPackage(int cost, List<DonationItem> items, DonationMisc misc)
- + {
- + super(cost, items, misc);
- + }
- +}
- Index: java/net/sf/l2j/donation/packages/MasterPackage.java
- ===================================================================
- --- java/net/sf/l2j/donation/packages/MasterPackage.java (nonexistent)
- +++ java/net/sf/l2j/donation/packages/MasterPackage.java (working copy)
- @@ -0,0 +1,15 @@
- +package net.sf.l2j.donation.packages;
- +
- +import java.util.List;
- +
- +import net.sf.l2j.donation.DonationItem;
- +import net.sf.l2j.donation.DonationMisc;
- +import net.sf.l2j.donation.DonationPackage;
- +
- +public class MasterPackage extends DonationPackage
- +{
- + public MasterPackage(int cost, List<DonationItem> items, DonationMisc misc)
- + {
- + super(cost, items, misc);
- + }
- +}
- Index: java/net/sf/l2j/donation/packages/PlatinumPackage.java
- ===================================================================
- --- java/net/sf/l2j/donation/packages/PlatinumPackage.java (nonexistent)
- +++ java/net/sf/l2j/donation/packages/PlatinumPackage.java (working copy)
- @@ -0,0 +1,15 @@
- +package net.sf.l2j.donation.packages;
- +
- +import java.util.List;
- +
- +import net.sf.l2j.donation.DonationItem;
- +import net.sf.l2j.donation.DonationMisc;
- +import net.sf.l2j.donation.DonationPackage;
- +
- +public class PlatinumPackage extends DonationPackage
- +{
- + public PlatinumPackage(int cost, List<DonationItem> items, DonationMisc misc)
- + {
- + super(cost, items, misc);
- + }
- +}
- Index: java/net/sf/l2j/donation/packages/SilverPackage.java
- ===================================================================
- --- java/net/sf/l2j/donation/packages/SilverPackage.java (nonexistent)
- +++ java/net/sf/l2j/donation/packages/SilverPackage.java (working copy)
- @@ -0,0 +1,15 @@
- +package net.sf.l2j.donation.packages;
- +
- +import java.util.List;
- +
- +import net.sf.l2j.donation.DonationItem;
- +import net.sf.l2j.donation.DonationMisc;
- +import net.sf.l2j.donation.DonationPackage;
- +
- +public class SilverPackage extends DonationPackage
- +{
- + public SilverPackage(int cost, List<DonationItem> items, DonationMisc misc)
- + {
- + super(cost, items, misc);
- + }
- +}
- Index: java/net/sf/l2j/gameserver/GameServer.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/GameServer.java (revision 2)
- +++ java/net/sf/l2j/gameserver/GameServer.java (working copy)
- @@ -18,6 +18,7 @@
- import net.sf.l2j.Config;
- import net.sf.l2j.L2DatabaseFactory;
- +import net.sf.l2j.donation.DonationStats;
- import net.sf.l2j.gameserver.cache.CrestCache;
- import net.sf.l2j.gameserver.cache.HtmCache;
- import net.sf.l2j.gameserver.communitybbs.Manager.ForumsBBSManager;
- @@ -283,6 +284,9 @@
- _log.config("SkillHandler: Loaded " + SkillHandler.getInstance().size() + " handlers.");
- _log.config("UserCommandHandler: Loaded " + UserCommandHandler.getInstance().size() + " handlers.");
- + StringUtil.printSection("Donation Stats");
- + _log.info("Loaded " + DonationStats.getInstance().size() + " Donation Packages.");
- +
- StringUtil.printSection("System");
- Runtime.getRuntime().addShutdownHook(Shutdown.getInstance());
- ForumsBBSManager.getInstance();
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java (revision 2)
- +++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java (working copy)
- @@ -5,6 +5,7 @@
- import net.sf.l2j.commons.lang.StringUtil;
- import net.sf.l2j.Config;
- +import net.sf.l2j.donation.DonationStats;
- import net.sf.l2j.gameserver.cache.CrestCache;
- import net.sf.l2j.gameserver.cache.HtmCache;
- import net.sf.l2j.gameserver.data.ItemTable;
- @@ -232,6 +233,11 @@
- ZoneManager.getInstance().reload();
- activeChar.sendMessage("Zones have been reloaded.");
- }
- + else if (type.startsWith("donations"))
- + {
- + DonationStats.getInstance().reload();
- + activeChar.sendMessage("Donations have been reloaded.");
- + }
- else
- {
- activeChar.sendMessage("Usage : //reload <acar|announcement|config|crest|door>");
- Index: java/net/sf/l2j/gameserver/model/actor/instance/DonationManager.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/actor/instance/DonationManager.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/actor/instance/DonationManager.java (working copy)
- @@ -0,0 +1,188 @@
- +package net.sf.l2j.gameserver.model.actor.instance;
- +
- +import java.util.Collection;
- +import java.util.StringTokenizer;
- +
- +import net.sf.l2j.commons.lang.StringUtil;
- +
- +import net.sf.l2j.donation.DonationHolder;
- +import net.sf.l2j.donation.DonationItem;
- +import net.sf.l2j.donation.DonationMisc;
- +import net.sf.l2j.donation.DonationPackage;
- +import net.sf.l2j.gameserver.data.ItemTable;
- +import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
- +import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
- +
- +public class DonationManager extends Folk
- +{
- + private static final int donateItemId = 57;
- +
- + public DonationManager(int objectId, NpcTemplate template)
- + {
- + super(objectId, template);
- + }
- +
- + @Override
- + public void onBypassFeedback(Player player, String command)
- + {
- + StringTokenizer st = new StringTokenizer(command, " ");
- + String currentCommand = st.nextToken();
- +
- + if (currentCommand.startsWith("showPackages"))
- + {
- + showPackages(player);
- + }
- + else if (currentCommand.startsWith("explore"))
- + {
- + if (!st.hasMoreTokens())
- + return;
- +
- + final int val = tryParseInt(st.nextToken());
- +
- + if (val < 0)
- + return;
- +
- + explorePackage(player, val);
- + }
- + else if (currentCommand.startsWith("buy"))
- + {
- + final int val = tryParseInt(st.nextToken());
- +
- + if (val <= 0)
- + return;
- +
- + final DonationPackage packet = DonationHolder.INSTANCE.get(val);
- +
- + if (packet == null)
- + return;
- +
- + if (player.destroyItemByItemId("donation", donateItemId, packet.getCost(), null, true))
- + packet.reward(player);
- + }
- + }
- +
- + /**
- + * @param player
- + * @param val
- + */
- + private void explorePackage(Player player, int val)
- + {
- + DonationPackage currPackage = DonationHolder.INSTANCE.get(val);
- +
- + if (currPackage == null)
- + return;
- +
- + final NpcHtmlMessage html = new NpcHtmlMessage(0);
- + html.setFile("data/html/mods/donate/list.htm");
- +
- + final StringBuilder sb = new StringBuilder();
- + generateHtmlForPackageItems(currPackage, sb);
- + generateHtmlForMiscs(currPackage, sb);
- + replacePackageHtmlPlaceholders(val, currPackage, html, sb);
- + player.sendPacket(html);
- + }
- +
- + private void replacePackageHtmlPlaceholders(int val, DonationPackage currPackage, NpcHtmlMessage html, StringBuilder sb)
- + {
- + html.replace("%package%", "<font color=\"LEVEL\">" + currPackage.getPackage().split("Package")[0] + " Package</font>");
- + html.replace("%objectId%", getObjectId());
- + html.replace("%items%", sb.toString());
- + html.replace("%packetVal%", val);
- + }
- +
- + private static void generateHtmlForMiscs(DonationPackage currPackage, StringBuilder sb)
- + {
- + if (!currPackage.haveMisc())
- + return;
- +
- + final DonationMisc misc = currPackage.getMisc();
- +
- + if (misc.haveNoblesse())
- + StringUtil.append(sb, "<tr><td align=\"center\">", "<font color=\"LEVEL\">Noblesse Status</font></td></tr>");
- +
- + if (misc.haveRec())
- + StringUtil.append(sb, "<tr><td align=\"center\"><font color=\"LEVEL\">Recommends</font> (", misc.getRecs(), ")</font></td></tr>");
- +
- + if (misc.haveDyes())
- + StringUtil.append(sb, "<tr><td align=\"center\"><font color=\"LEVEL\">Auto Dyes Picker</font></td></tr>");
- + }
- +
- + private static void generateHtmlForPackageItems(DonationPackage currPackage, StringBuilder sb)
- + {
- + for (DonationItem donateItem : currPackage.getItems())
- + {
- + final String name = ItemTable.getInstance().getTemplate(donateItem.getId()).getName();
- + final int count = donateItem.getCount();
- + final int enchant = donateItem.getEnchant();
- + StringUtil.append(sb, "<tr><td align=\"center\">", name, " (x", count, ")" + (enchant > 0 ? " <font color=\"LEVEL\">+" + enchant + "</font>" : "") + "</td></tr>");
- + }
- + }
- +
- + private void showPackages(Player player)
- + {
- + final Collection<DonationPackage> packages = DonationHolder.INSTANCE.getPackages();
- + if (packages.isEmpty())
- + return;
- +
- + final NpcHtmlMessage html = new NpcHtmlMessage(0);
- + html.setFile(getHtmlPath(getNpcId(), 1));
- +
- + final StringBuilder sb = new StringBuilder();
- + generateDonationPackageHtml(packages, sb);
- + replaceHtmlPlaceholders(html, sb);
- + player.sendPacket(html);
- + }
- +
- + private void replaceHtmlPlaceholders(NpcHtmlMessage html, StringBuilder sb)
- + {
- + html.replace("%packages%", sb.toString());
- + html.replace("%objectId%", getObjectId());
- + }
- +
- + private static void generateDonationPackageHtml(Collection<DonationPackage> packages, StringBuilder sb)
- + {
- + int pos = 0;
- + for (final DonationPackage dp : packages)
- + {
- + final String name = dp.getPackage().split("Package")[0] + " Package";
- + final int cost = dp.getCost();
- + StringUtil.append(sb, "<tr><td align=\"center\"><a action=\"bypass -h npc_%objectId%_explore ", pos++, "\">", name, "</a></td><td>", "<font color=\"3399CC\">", cost, " ", ItemTable.getInstance().getTemplate(donateItemId).getName(), "</font></td></tr>");
- + }
- + }
- +
- + private static int tryParseInt(String val)
- + {
- + try
- + {
- + return Integer.parseInt(val);
- + }
- + catch (NumberFormatException e)
- + {
- + return 0;
- + }
- + }
- +
- + @Override
- + public String getHtmlPath(int npcId, int val)
- + {
- + String filename = "";
- + if (val == 0)
- + filename = "" + npcId;
- + else
- + filename = npcId + "-" + val;
- +
- + return "data/html/mods/donate/" + filename + ".htm";
- + }
- +
- +}
- \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement