Advertisement
Guest User

Untitled

a guest
May 25th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.22 KB | None | 0 0
  1. /*
  2.  * This file is part of the L2J Mobius project.
  3.  *
  4.  * This program is free software: you can redistribute it and/or modify
  5.  * it under the terms of the GNU General Public License as published by
  6.  * the Free Software Foundation, either version 3 of the License, or
  7.  * (at your option) any later version.
  8.  *
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12.  * General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  16.  */
  17. package events.MasterOfEnchanting;
  18.  
  19. import org.l2jmobius.gameserver.model.actor.Npc;
  20. import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  21. import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
  22. import org.l2jmobius.gameserver.model.quest.LongTimeEvent;
  23. import org.l2jmobius.gameserver.network.SystemMessageId;
  24. import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
  25.  
  26. import java.util.Date;
  27.  
  28. /**
  29.  * Master of Enchanting event AI.
  30.  *
  31.  * @author Gnacik
  32.  */
  33. public final class MasterOfEnchanting extends LongTimeEvent {
  34.     // NPC
  35.     private static final int MASTER_YOGI = 32599;
  36.     // Items
  37.     private static final int MASTER_YOGI_STAFF = 13539;
  38.     private static final int MASTER_YOGI_SCROLL = 13540;
  39.     // Misc
  40.     private static final int STAFF_PRICE = 1000000;
  41.     private static final int SCROLL_24_PRICE = 5000000;
  42.     private static final int SCROLL_24_TIME = 6;
  43.     private static final int SCROLL_1_PRICE = 500000;
  44.     private static final int SCROLL_10_PRICE = 5000000;
  45.  
  46.     private static final int[] HAT_SHADOW_REWARD =
  47.             {
  48.                     13074,
  49.                     13075,
  50.                     13076
  51.             };
  52.     private static final int[] HAT_EVENT_REWARD =
  53.             {
  54.                     13518,
  55.                     13519,
  56.                     13522
  57.             };
  58.     private static final int[] CRYSTAL_REWARD =
  59.             {
  60.                     9570,
  61.                     9571,
  62.                     9572
  63.             };
  64.  
  65.     @SuppressWarnings("deprecation")
  66.     private static final Date EVENT_START = new Date(2011, 7, 1);
  67.  
  68.     private MasterOfEnchanting() {
  69.         addStartNpc(MASTER_YOGI);
  70.         addFirstTalkId(MASTER_YOGI);
  71.         addTalkId(MASTER_YOGI);
  72.     }
  73.  
  74.     @Override
  75.     public String onAdvEvent(String event, Npc npc, PlayerInstance player) {
  76.         String htmltext = event;
  77.         if (event.equalsIgnoreCase("buy_staff")) {
  78.             if (!hasQuestItems(player, MASTER_YOGI_STAFF) && (getQuestItemsCount(player, Inventory.ADENA_ID) > STAFF_PRICE)) {
  79.                 takeItems(player, Inventory.ADENA_ID, STAFF_PRICE);
  80.                 giveItems(player, MASTER_YOGI_STAFF, 1);
  81.                 htmltext = "32599-staffbuyed.htm";
  82.             } else {
  83.                 htmltext = "32599-staffcant.htm";
  84.             }
  85.         } else if (event.equalsIgnoreCase("buy_scroll_24")) {
  86.             final long curTime = System.currentTimeMillis();
  87.             final String value = player.getVariables().getString("MasterOfEnchanting");
  88.             final long reuse = value == "" ? 0 : Long.parseLong(value);
  89.             if (player.getCreateDate().after(EVENT_START)) {
  90.                 return "32599-bidth.htm";
  91.             }
  92.  
  93.             if (curTime > reuse) {
  94.                 if (getQuestItemsCount(player, Inventory.ADENA_ID) > SCROLL_24_PRICE) {
  95.                     takeItems(player, Inventory.ADENA_ID, SCROLL_24_PRICE);
  96.                     giveItems(player, MASTER_YOGI_SCROLL, 24);
  97.                     player.getVariables().set("MasterOfEnchanting", Long.toString(System.currentTimeMillis() + (SCROLL_24_TIME * 3600000)));
  98.                     htmltext = "32599-scroll24.htm";
  99.                 } else {
  100.                     htmltext = "32599-s24-no.htm";
  101.                 }
  102.             } else {
  103.                 final long remainingTime = (reuse - curTime) / 1000;
  104.                 final int hours = (int) remainingTime / 3600;
  105.                 final int minutes = ((int) remainingTime % 3600) / 60;
  106.                 if (hours > 0) {
  107.                     final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_S1_HOURS_S_AND_S2_MINUTE_S_REMAINING_UNTIL_THE_ITEM_CAN_BE_PURCHASED_AGAIN);
  108.                     sm.addInt(hours);
  109.                     sm.addInt(minutes);
  110.                     player.sendPacket(sm);
  111.                     htmltext = "32599-scroll24.htm";
  112.                 } else if (minutes > 0) {
  113.                     final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_S1_MINUTE_S_REMAINING_UNTIL_THE_ITEM_CAN_BE_PURCHASED_AGAIN);
  114.                     sm.addInt(minutes);
  115.                     player.sendPacket(sm);
  116.                     htmltext = "32599-scroll24.htm";
  117.                 }
  118.                 // Little glitch. There is no SystemMessage with seconds only.
  119.                 // If time is less than 1 minute player can buy scrolls
  120.                 else if (getQuestItemsCount(player, Inventory.ADENA_ID) > SCROLL_24_PRICE) {
  121.                     takeItems(player, Inventory.ADENA_ID, SCROLL_24_PRICE);
  122.                     giveItems(player, MASTER_YOGI_SCROLL, 24);
  123.                     player.getVariables().set("MasterOfEnchanting", Long.toString(System.currentTimeMillis() + (SCROLL_24_TIME * 3600000)));
  124.                     htmltext = "32599-scroll24.htm";
  125.                 } else {
  126.                     htmltext = "32599-s24-no.htm";
  127.                 }
  128.             }
  129.         } else if (event.equalsIgnoreCase("buy_scroll_1")) {
  130.             if (getQuestItemsCount(player, Inventory.ADENA_ID) > SCROLL_1_PRICE) {
  131.                 takeItems(player, Inventory.ADENA_ID, SCROLL_1_PRICE);
  132.                 giveItems(player, MASTER_YOGI_SCROLL, 1);
  133.                 htmltext = "32599-scroll-ok.htm";
  134.             } else {
  135.                 htmltext = "32599-s1-no.htm";
  136.             }
  137.         } else if (event.equalsIgnoreCase("buy_scroll_10")) {
  138.             if (getQuestItemsCount(player, Inventory.ADENA_ID) > SCROLL_10_PRICE) {
  139.                 takeItems(player, Inventory.ADENA_ID, SCROLL_10_PRICE);
  140.                 giveItems(player, MASTER_YOGI_SCROLL, 10);
  141.                 htmltext = "32599-scroll-ok.htm";
  142.             } else {
  143.                 htmltext = "32599-s10-no.htm";
  144.             }
  145.         } else if (event.equalsIgnoreCase("receive_reward")) {
  146.             if ((getItemEquipped(player, Inventory.PAPERDOLL_RHAND) == MASTER_YOGI_STAFF) && (getEnchantLevel(player, MASTER_YOGI_STAFF) > 3)) {
  147.                 switch (getEnchantLevel(player, MASTER_YOGI_STAFF)) {
  148.                     case 4: {
  149.                         giveItems(player, 6406, 1); // Firework
  150.                         break;
  151.                     }
  152.                     case 5: {
  153.                         giveItems(player, 6406, 2); // Firework
  154.                         giveItems(player, 6407, 1); // Large Firework
  155.                         break;
  156.                     }
  157.                     case 6: {
  158.                         giveItems(player, 6406, 3); // Firework
  159.                         giveItems(player, 6407, 2); // Large Firework
  160.                         break;
  161.                     }
  162.                     case 7: {
  163.                         giveItems(player, HAT_SHADOW_REWARD[getRandom(3)], 1);
  164.                         break;
  165.                     }
  166.                     case 8: {
  167.                         giveItems(player, 955, 1); // Scroll: Enchant Weapon (D)
  168.                         break;
  169.                     }
  170.                     case 9: {
  171.                         giveItems(player, 955, 1); // Scroll: Enchant Weapon (D)
  172.                         giveItems(player, 956, 1); // Scroll: Enchant Armor (D)
  173.                         break;
  174.                     }
  175.                     case 10: {
  176.                         giveItems(player, 951, 1); // Scroll: Enchant Weapon (C)
  177.                         break;
  178.                     }
  179.                     case 11: {
  180.                         giveItems(player, 951, 1); // Scroll: Enchant Weapon (C)
  181.                         giveItems(player, 952, 1); // Scroll: Enchant Armor (C)
  182.                         break;
  183.                     }
  184.                     case 12: {
  185.                         giveItems(player, 948, 1); // Scroll: Enchant Armor (B)
  186.                         break;
  187.                     }
  188.                     case 13: {
  189.                         giveItems(player, 729, 1); // Scroll: Enchant Weapon (A)
  190.                         break;
  191.                     }
  192.                     case 14: {
  193.                         giveItems(player, HAT_EVENT_REWARD[getRandom(3)], 1);
  194.                         break;
  195.                     }
  196.                     case 15: {
  197.                         giveItems(player, 13992, 1); // Grade S Accessory Chest (Event)
  198.                         break;
  199.                     }
  200.                     case 16: {
  201.                         giveItems(player, 8762, 1); // Top-Grade Life Stone: level 76
  202.                         break;
  203.                     }
  204.                     case 17: {
  205.                         giveItems(player, 959, 1); // Scroll: Enchant Weapon (S)
  206.                         break;
  207.                     }
  208.                     case 18: {
  209.                         giveItems(player, 13991, 1); // Grade S Armor Chest (Event)
  210.                         break;
  211.                     }
  212.                     case 19: {
  213.                         giveItems(player, 13990, 1); // Grade S Weapon Chest (Event)
  214.                         break;
  215.                     }
  216.                     case 20: {
  217.                         giveItems(player, CRYSTAL_REWARD[getRandom(3)], 1); // Red/Blue/Green Soul Crystal - Stage 14
  218.                         break;
  219.                     }
  220.                     case 21: {
  221.                         giveItems(player, 8762, 1); // Top-Grade Life Stone: level 76
  222.                         giveItems(player, 8752, 1); // High-Grade Life Stone: level 76
  223.                         giveItems(player, CRYSTAL_REWARD[getRandom(3)], 1); // Red/Blue/Green Soul Crystal - Stage 14
  224.                         break;
  225.                     }
  226.                     case 22: {
  227.                         giveItems(player, 13989, 1); // S80 Grade Armor Chest (Event)
  228.                         break;
  229.                     }
  230.                     case 23: {
  231.                         giveItems(player, 13988, 1); // S80 Grade Weapon Chest (Event)
  232.                         break;
  233.                     }
  234.                     default: {
  235.                         if (getEnchantLevel(player, MASTER_YOGI_STAFF) > 23) {
  236.                             giveItems(player, 13988, 1); // S80 Grade Weapon Chest (Event)
  237.                         }
  238.                     }
  239.                 }
  240.                 takeItems(player, MASTER_YOGI_STAFF, 1);
  241.                 htmltext = "32599-rewardok.htm";
  242.             } else {
  243.                 htmltext = "32599-rewardnostaff.htm";
  244.             }
  245.         }
  246.         return htmltext;
  247.     }
  248.  
  249.     @Override
  250.     public String onFirstTalk(Npc npc, PlayerInstance player) {
  251.         return npc.getId() + ".htm";
  252.     }
  253.  
  254.     public static void main(String[] args) {
  255.         new MasterOfEnchanting();
  256.     }
  257. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement