123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- /*
- * Copyright (C) 2004-2014 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * L2J DataPack is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- package custom.events.Wedding;
- import ai.npc.AbstractNpcAI;
- import com.l2jserver.Config;
- import com.l2jserver.gameserver.instancemanager.CoupleManager;
- import com.l2jserver.gameserver.model.L2World;
- import com.l2jserver.gameserver.model.actor.L2Npc;
- import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
- import com.l2jserver.gameserver.model.entity.Couple;
- import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
- import com.l2jserver.gameserver.model.skills.CommonSkill;
- import com.l2jserver.gameserver.model.skills.Skill;
- import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
- import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
- import com.l2jserver.gameserver.util.Broadcast;
- /**
- * Wedding AI.
- * @author Zoey76
- */
- public final class Wedding extends AbstractNpcAI
- {
- // NPC
- private static final int MANAGER_ID = 50007;
- // Item
- private static final int FORMAL_WEAR = 6408;
-
- public Wedding()
- {
- super(Wedding.class.getSimpleName(), "custom/events");
- addFirstTalkId(MANAGER_ID);
- addTalkId(MANAGER_ID);
- addStartNpc(MANAGER_ID);
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (player.getPartnerId() == 0)
- {
- return "NoPartner.html";
- }
-
- final L2PcInstance partner = L2World.getInstance().getPlayer(player.getPartnerId());
- if ((partner == null) || !partner.isOnline())
- {
- return "NotFound.html";
- }
-
- if (player.isMarried())
- {
- return "Already.html";
- }
-
- if (player.isMarryAccepted())
- {
- return "WaitForPartner.html";
- }
-
- String htmltext = null;
- if (player.isMarryRequest())
- {
- if (!isWearingFormalWear(player) || !isWearingFormalWear(partner))
- {
- htmltext = sendHtml(partner, "NoFormal.html", null, null);
- }
- else
- {
- player.setMarryRequest(false);
- partner.setMarryRequest(false);
- htmltext = getHtm(player.getHtmlPrefix(), "Ask.html");
- htmltext = htmltext.replaceAll("%player%", partner.getName());
- }
- return htmltext;
- }
-
- switch (event)
- {
- case "ask":
- {
- if (!isWearingFormalWear(player) || !isWearingFormalWear(partner))
- {
- htmltext = sendHtml(partner, "NoFormal.html", null, null);
- }
- else
- {
- player.setMarryAccepted(true);
- partner.setMarryRequest(true);
-
- sendHtml(partner, "Ask.html", "%player%", player.getName());
-
- htmltext = getHtm(player.getHtmlPrefix(), "Requested.html");
- htmltext = htmltext.replaceAll("%player%", partner.getName());
- }
- break;
- }
- case "accept":
- {
- if (!isWearingFormalWear(player) || !isWearingFormalWear(partner))
- {
- htmltext = sendHtml(partner, "NoFormal.html", null, null);
- }
- else if ((player.getAdena() < Config.L2JMOD_WEDDING_PRICE) || (partner.getAdena() < Config.L2JMOD_WEDDING_PRICE))
- {
- htmltext = sendHtml(partner, "Adena.html", "%fee%", String.valueOf(Config.L2JMOD_WEDDING_PRICE));
- }
- else
- {
- player.reduceAdena("Wedding", Config.L2JMOD_WEDDING_PRICE, player.getLastFolkNPC(), true);
- partner.reduceAdena("Wedding", Config.L2JMOD_WEDDING_PRICE, player.getLastFolkNPC(), true);
-
- // Accept the wedding request
- player.setMarryAccepted(true);
- Couple couple = CoupleManager.getInstance().getCouple(player.getCoupleId());
- couple.marry();
-
- // Messages to the couple
- player.sendMessage("Congratulations you are married!");
- player.setMarried(true);
- player.setMarryRequest(false);
- partner.sendMessage("Congratulations you are married!");
- partner.setMarried(true);
- partner.setMarryRequest(false);
-
- // Wedding march
- player.broadcastPacket(new MagicSkillUse(player, player, 2230, 1, 1, 0));
- partner.broadcastPacket(new MagicSkillUse(partner, partner, 2230, 1, 1, 0));
-
- // Fireworks
- Skill skill = CommonSkill.LARGE_FIREWORK.getSkill();
- if (skill != null)
- {
- player.doCast(skill);
- partner.doCast(skill);
- }
-
- Broadcast.toAllOnlinePlayers("Congratulations to " + player.getName() + " and " + partner.getName() + "! They have been married.");
-
- htmltext = sendHtml(partner, "Accepted.html", null, null);
- }
- break;
- }
- case "decline":
- {
- player.setMarryRequest(false);
- partner.setMarryRequest(false);
- player.setMarryAccepted(false);
- partner.setMarryAccepted(false);
-
- player.sendMessage("You declined your partner's marriage request.");
- partner.sendMessage("Your partner declined your marriage request.");
-
- htmltext = sendHtml(partner, "Declined.html", null, null);
- break;
- }
- }
- return htmltext;
- }
-
- @Override
- public String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- final String htmltext = getHtm(player.getHtmlPrefix(), "Start.html");
- return htmltext.replaceAll("%fee%", String.valueOf(Config.L2JMOD_WEDDING_PRICE));
- }
-
- private String sendHtml(L2PcInstance player, String fileName, String regex, String replacement)
- {
- String html = getHtm(player.getHtmlPrefix(), fileName);
- if ((regex != null) && (replacement != null))
- {
- html = html.replaceAll(regex, replacement);
- }
- player.sendPacket(new NpcHtmlMessage(html));
- return html;
- }
-
- private static boolean isWearingFormalWear(L2PcInstance player)
- {
- if (Config.L2JMOD_WEDDING_FORMALWEAR)
- {
- final L2ItemInstance formalWear = player.getChestArmorInstance();
- return (formalWear != null) && (formalWear.getId() == FORMAL_WEAR);
- }
- return true;
- }
-
- public static void main(String[] args)
- {
- new Wedding();
- }
- }
|