|
@@ -1,703 +0,0 @@
|
|
|
-/*
|
|
|
- * Copyright © 2004-2023 L2J Server
|
|
|
- *
|
|
|
- * This file is part of L2J Server.
|
|
|
- *
|
|
|
- * L2J Server 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 Server 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 com.l2jserver.gameserver.model.actor.instance;
|
|
|
-
|
|
|
-import static com.l2jserver.gameserver.config.Configuration.sevenSigns;
|
|
|
-
|
|
|
-import java.util.StringTokenizer;
|
|
|
-
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
-
|
|
|
-import com.l2jserver.gameserver.SevenSigns;
|
|
|
-import com.l2jserver.gameserver.cache.HtmCache;
|
|
|
-import com.l2jserver.gameserver.enums.InstanceType;
|
|
|
-import com.l2jserver.gameserver.model.actor.L2Npc;
|
|
|
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
|
-import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
|
|
|
-import com.l2jserver.gameserver.network.SystemMessageId;
|
|
|
-import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
|
|
|
-import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
|
|
-
|
|
|
-/**
|
|
|
- * Dawn/Dusk Seven Signs Priest Instance
|
|
|
- * @author Tempy
|
|
|
- */
|
|
|
-public class L2SignsPriestInstance extends L2Npc {
|
|
|
- private static final Logger LOG = LoggerFactory.getLogger(L2SignsPriestInstance.class);
|
|
|
-
|
|
|
- public L2SignsPriestInstance(L2NpcTemplate template) {
|
|
|
- super(template);
|
|
|
- setInstanceType(InstanceType.L2SignsPriestInstance);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onBypassFeedback(L2PcInstance player, String command) {
|
|
|
- if ((player.getLastFolkNPC() == null) || (player.getLastFolkNPC().getObjectId() != getObjectId())) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (command.startsWith("SevenSignsDesc")) {
|
|
|
- int val = Integer.parseInt(command.substring(15));
|
|
|
- showChatWindow(player, val, null, true);
|
|
|
- } else if (command.startsWith("SevenSigns")) {
|
|
|
- SystemMessage sm;
|
|
|
-
|
|
|
- String path;
|
|
|
-
|
|
|
- int cabal = SevenSigns.CABAL_NULL;
|
|
|
- int stoneType;
|
|
|
-
|
|
|
- int val = Integer.parseInt(command.substring(11, 12).trim());
|
|
|
-
|
|
|
- if (command.length() > 12) {
|
|
|
- val = Integer.parseInt(command.substring(11, 13).trim());
|
|
|
- }
|
|
|
-
|
|
|
- if (command.length() > 13) {
|
|
|
- try {
|
|
|
- cabal = Integer.parseInt(command.substring(14, 15).trim());
|
|
|
- } catch (Exception e) {
|
|
|
- try {
|
|
|
- cabal = Integer.parseInt(command.substring(13, 14).trim());
|
|
|
- } catch (Exception e2) {
|
|
|
- try {
|
|
|
- StringTokenizer st = new StringTokenizer(command.trim());
|
|
|
- st.nextToken();
|
|
|
- cabal = Integer.parseInt(st.nextToken());
|
|
|
- } catch (Exception e3) {
|
|
|
- LOG.warn("Failed to retrieve cabal from bypass command. NpcId: {}, Command: {}", getId(), command);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- switch (val) {
|
|
|
- case 2: // Purchase Record of the Seven Signs
|
|
|
- if (!player.getInventory().validateCapacity(1)) {
|
|
|
- player.sendPacket(SystemMessageId.SLOTS_FULL);
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- if (!player.reduceAdena("SevenSigns", SevenSigns.RECORD_SEVEN_SIGNS_COST, this, true)) {
|
|
|
- player.sendPacket(SystemMessageId.YOU_NOT_ENOUGH_ADENA);
|
|
|
- break;
|
|
|
- }
|
|
|
- player.getInventory().addItem("SevenSigns", SevenSigns.RECORD_SEVEN_SIGNS_ID, 1, player, this);
|
|
|
-
|
|
|
- sm = SystemMessage.getSystemMessage(SystemMessageId.EARNED_ITEM_S1);
|
|
|
- sm.addItemName(SevenSigns.RECORD_SEVEN_SIGNS_ID);
|
|
|
- player.sendPacket(sm);
|
|
|
-
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, val, "dawn", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, val, "dusk", false);
|
|
|
- }
|
|
|
- break;
|
|
|
- case 33: // "I want to participate" request
|
|
|
- int oldCabal = SevenSigns.getInstance().getPlayerCabal(player.getObjectId());
|
|
|
-
|
|
|
- if (oldCabal != SevenSigns.CABAL_NULL) {
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, val, "dawn_member", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, val, "dusk_member", false);
|
|
|
- }
|
|
|
- return;
|
|
|
- } else if (player.getClassId().level() == 0) {
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, val, "dawn_firstclass", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, val, "dusk_firstclass", false);
|
|
|
- }
|
|
|
- return;
|
|
|
- } else if ((cabal == SevenSigns.CABAL_DUSK) && sevenSigns().castleForDusk()) // dusk
|
|
|
- {
|
|
|
- // castle owners cannot participate with dusk side
|
|
|
- if ((player.getClan() != null) && (player.getClan().getCastleId() > 0)) {
|
|
|
- showChatWindow(player, SevenSigns.SEVEN_SIGNS_HTML_PATH + "signs_33_dusk_no.htm");
|
|
|
- break;
|
|
|
- }
|
|
|
- } else if ((cabal == SevenSigns.CABAL_DAWN) && sevenSigns().castleForDawn()) // dawn
|
|
|
- {
|
|
|
- // clans without castle need to pay participation fee
|
|
|
- if ((player.getClan() == null) || (player.getClan().getCastleId() == 0)) {
|
|
|
- showChatWindow(player, SevenSigns.SEVEN_SIGNS_HTML_PATH + "signs_33_dawn_fee.htm");
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, val, "dawn", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, val, "dusk", false);
|
|
|
- }
|
|
|
- break;
|
|
|
- case 34: // Pay the participation fee request
|
|
|
- if ((player.getClassId().level() > 0) && ((player.getAdena() >= sevenSigns().getSevenSignsJoinDawnFee()) || (player.getInventory().getInventoryItemCount(sevenSigns().getSevenSignsManorsAgreementId(), -1) > 0))) {
|
|
|
- showChatWindow(player, SevenSigns.SEVEN_SIGNS_HTML_PATH + "signs_33_dawn.htm");
|
|
|
- } else {
|
|
|
- showChatWindow(player, SevenSigns.SEVEN_SIGNS_HTML_PATH + "signs_33_dawn_no.htm");
|
|
|
- }
|
|
|
- break;
|
|
|
- case 3: // Join Cabal Intro 1
|
|
|
- case 8: // Festival of Darkness Intro - SevenSigns x [0]1
|
|
|
- showChatWindow(player, val, SevenSigns.getCabalShortName(cabal), false);
|
|
|
- break;
|
|
|
- case 4: // Join a Cabal - SevenSigns 4 [0]1 x
|
|
|
- int newSeal = Integer.parseInt(command.substring(15));
|
|
|
-
|
|
|
- if (player.getClassId().level() >= 1) {
|
|
|
- if ((cabal == SevenSigns.CABAL_DUSK) && sevenSigns().castleForDusk()) {
|
|
|
- if ((player.getClan() != null) && (player.getClan().getCastleId() > 0)) // even if in htmls is said that ally can have castle too, but its not
|
|
|
- {
|
|
|
- showChatWindow(player, SevenSigns.SEVEN_SIGNS_HTML_PATH + "signs_33_dusk_no.htm");
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- // If the player is trying to join the Lords of Dawn, check if they are carrying a Lord's certificate. If not then try to take the required amount of adena instead.
|
|
|
- if (sevenSigns().castleForDawn() && (cabal == SevenSigns.CABAL_DAWN)) {
|
|
|
- boolean allowJoinDawn = false;
|
|
|
-
|
|
|
- if ((player.getClan() != null) && (player.getClan().getCastleId() > 0)) {
|
|
|
- allowJoinDawn = true;
|
|
|
- } else if (player.destroyItemByItemId("SevenSigns", sevenSigns().getSevenSignsManorsAgreementId(), 1, this, true)) {
|
|
|
- allowJoinDawn = true;
|
|
|
- } else if (player.reduceAdena("SevenSigns", sevenSigns().getSevenSignsJoinDawnFee(), this, true)) {
|
|
|
- allowJoinDawn = true;
|
|
|
- }
|
|
|
-
|
|
|
- if (!allowJoinDawn) {
|
|
|
- showChatWindow(player, SevenSigns.SEVEN_SIGNS_HTML_PATH + "signs_33_dawn_fee.htm");
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- SevenSigns.getInstance().setPlayerInfo(player.getObjectId(), cabal, newSeal);
|
|
|
-
|
|
|
- if (cabal == SevenSigns.CABAL_DAWN) {
|
|
|
- player.sendPacket(SystemMessageId.SEVENSIGNS_PARTECIPATION_DAWN); // Joined Dawn
|
|
|
- } else {
|
|
|
- player.sendPacket(SystemMessageId.SEVENSIGNS_PARTECIPATION_DUSK); // Joined Dusk
|
|
|
- }
|
|
|
-
|
|
|
- // Show a confirmation message to the user, indicating which seal they chose.
|
|
|
- switch (newSeal) {
|
|
|
- case SevenSigns.SEAL_AVARICE -> player.sendPacket(SystemMessageId.FIGHT_FOR_AVARICE);
|
|
|
- case SevenSigns.SEAL_GNOSIS -> player.sendPacket(SystemMessageId.FIGHT_FOR_GNOSIS);
|
|
|
- case SevenSigns.SEAL_STRIFE -> player.sendPacket(SystemMessageId.FIGHT_FOR_STRIFE);
|
|
|
- }
|
|
|
-
|
|
|
- showChatWindow(player, 4, SevenSigns.getCabalShortName(cabal), false);
|
|
|
- break;
|
|
|
- case 5:
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- if (SevenSigns.getInstance().getPlayerCabal(player.getObjectId()) == SevenSigns.CABAL_NULL) {
|
|
|
- showChatWindow(player, val, "dawn_no", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, val, "dawn", false);
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (SevenSigns.getInstance().getPlayerCabal(player.getObjectId()) == SevenSigns.CABAL_NULL) {
|
|
|
- showChatWindow(player, val, "dusk_no", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, val, "dusk", false);
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case 21:
|
|
|
- int contribStoneId = Integer.parseInt(command.substring(14, 18));
|
|
|
-
|
|
|
- L2ItemInstance contribBlueStones = player.getInventory().getItemByItemId(SevenSigns.SEAL_STONE_BLUE_ID);
|
|
|
- L2ItemInstance contribGreenStones = player.getInventory().getItemByItemId(SevenSigns.SEAL_STONE_GREEN_ID);
|
|
|
- L2ItemInstance contribRedStones = player.getInventory().getItemByItemId(SevenSigns.SEAL_STONE_RED_ID);
|
|
|
-
|
|
|
- long contribBlueStoneCount = contribBlueStones == null ? 0 : contribBlueStones.getCount();
|
|
|
- long contribGreenStoneCount = contribGreenStones == null ? 0 : contribGreenStones.getCount();
|
|
|
- long contribRedStoneCount = contribRedStones == null ? 0 : contribRedStones.getCount();
|
|
|
-
|
|
|
- long score = SevenSigns.getInstance().getPlayerContribScore(player.getObjectId());
|
|
|
- long contributionCount;
|
|
|
-
|
|
|
- boolean contribStonesFound = false;
|
|
|
-
|
|
|
- long redContrib = 0;
|
|
|
- long greenContrib = 0;
|
|
|
- long blueContrib = 0;
|
|
|
-
|
|
|
- try {
|
|
|
- contributionCount = Long.parseLong(command.substring(19).trim());
|
|
|
- } catch (Exception NumberFormatException) {
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, 6, "dawn_failure", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, 6, "dusk_failure", false);
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- switch (contribStoneId) {
|
|
|
- case SevenSigns.SEAL_STONE_BLUE_ID -> {
|
|
|
- blueContrib = (sevenSigns().getMaxPlayerContrib() - score) / SevenSigns.BLUE_CONTRIB_POINTS;
|
|
|
- if (blueContrib > contribBlueStoneCount) {
|
|
|
- blueContrib = contributionCount;
|
|
|
- }
|
|
|
- }
|
|
|
- case SevenSigns.SEAL_STONE_GREEN_ID -> {
|
|
|
- greenContrib = (sevenSigns().getMaxPlayerContrib() - score) / SevenSigns.GREEN_CONTRIB_POINTS;
|
|
|
- if (greenContrib > contribGreenStoneCount) {
|
|
|
- greenContrib = contributionCount;
|
|
|
- }
|
|
|
- }
|
|
|
- case SevenSigns.SEAL_STONE_RED_ID -> {
|
|
|
- redContrib = (sevenSigns().getMaxPlayerContrib() - score) / SevenSigns.RED_CONTRIB_POINTS;
|
|
|
- if (redContrib > contribRedStoneCount) {
|
|
|
- redContrib = contributionCount;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (redContrib > 0) {
|
|
|
- if (player.destroyItemByItemId("SevenSigns", SevenSigns.SEAL_STONE_RED_ID, redContrib, this, false)) {
|
|
|
- contribStonesFound = true;
|
|
|
- SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.S2_S1_DISAPPEARED);
|
|
|
- msg.addItemName(SevenSigns.SEAL_STONE_RED_ID);
|
|
|
- msg.addLong(redContrib);
|
|
|
- player.sendPacket(msg);
|
|
|
- }
|
|
|
- }
|
|
|
- if (greenContrib > 0) {
|
|
|
- if (player.destroyItemByItemId("SevenSigns", SevenSigns.SEAL_STONE_GREEN_ID, greenContrib, this, false)) {
|
|
|
- contribStonesFound = true;
|
|
|
- SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.S2_S1_DISAPPEARED);
|
|
|
- msg.addItemName(SevenSigns.SEAL_STONE_GREEN_ID);
|
|
|
- msg.addLong(greenContrib);
|
|
|
- player.sendPacket(msg);
|
|
|
- }
|
|
|
- }
|
|
|
- if (blueContrib > 0) {
|
|
|
- if (player.destroyItemByItemId("SevenSigns", SevenSigns.SEAL_STONE_BLUE_ID, blueContrib, this, false)) {
|
|
|
- contribStonesFound = true;
|
|
|
- SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.S2_S1_DISAPPEARED);
|
|
|
- msg.addItemName(SevenSigns.SEAL_STONE_BLUE_ID);
|
|
|
- msg.addLong(blueContrib);
|
|
|
- player.sendPacket(msg);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (!contribStonesFound) {
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, 6, "dawn_low_stones", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, 6, "dusk_low_stones", false);
|
|
|
- }
|
|
|
- } else {
|
|
|
- score = SevenSigns.getInstance().addPlayerStoneContrib(player.getObjectId(), blueContrib, greenContrib, redContrib);
|
|
|
- sm = SystemMessage.getSystemMessage(SystemMessageId.CONTRIB_SCORE_INCREASED_S1);
|
|
|
- sm.addLong(score);
|
|
|
- player.sendPacket(sm);
|
|
|
-
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, 6, "dawn", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, 6, "dusk", false);
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case 6: // Contribute Seal Stones - SevenSigns 6 x
|
|
|
- stoneType = Integer.parseInt(command.substring(13));
|
|
|
-
|
|
|
- L2ItemInstance blueStones = player.getInventory().getItemByItemId(SevenSigns.SEAL_STONE_BLUE_ID);
|
|
|
- L2ItemInstance greenStones = player.getInventory().getItemByItemId(SevenSigns.SEAL_STONE_GREEN_ID);
|
|
|
- L2ItemInstance redStones = player.getInventory().getItemByItemId(SevenSigns.SEAL_STONE_RED_ID);
|
|
|
-
|
|
|
- long blueStoneCount = blueStones == null ? 0 : blueStones.getCount();
|
|
|
- long greenStoneCount = greenStones == null ? 0 : greenStones.getCount();
|
|
|
- long redStoneCount = redStones == null ? 0 : redStones.getCount();
|
|
|
-
|
|
|
- long contribScore = SevenSigns.getInstance().getPlayerContribScore(player.getObjectId());
|
|
|
- boolean stonesFound = false;
|
|
|
-
|
|
|
- if (contribScore == sevenSigns().getMaxPlayerContrib()) {
|
|
|
- player.sendPacket(SystemMessageId.CONTRIB_SCORE_EXCEEDED);
|
|
|
- } else {
|
|
|
- long redContribCount;
|
|
|
- long greenContribCount;
|
|
|
- long blueContribCount;
|
|
|
-
|
|
|
- String contribStoneColor = null;
|
|
|
- String stoneColorContr = null;
|
|
|
-
|
|
|
- long stoneCountContr = 0;
|
|
|
- int stoneIdContr = 0;
|
|
|
-
|
|
|
- switch (stoneType) {
|
|
|
- case 1 -> {
|
|
|
- contribStoneColor = "Blue";
|
|
|
- stoneColorContr = "blue";
|
|
|
- stoneIdContr = SevenSigns.SEAL_STONE_BLUE_ID;
|
|
|
- stoneCountContr = blueStoneCount;
|
|
|
- }
|
|
|
- case 2 -> {
|
|
|
- contribStoneColor = "Green";
|
|
|
- stoneColorContr = "green";
|
|
|
- stoneIdContr = SevenSigns.SEAL_STONE_GREEN_ID;
|
|
|
- stoneCountContr = greenStoneCount;
|
|
|
- }
|
|
|
- case 3 -> {
|
|
|
- contribStoneColor = "Red";
|
|
|
- stoneColorContr = "red";
|
|
|
- stoneIdContr = SevenSigns.SEAL_STONE_RED_ID;
|
|
|
- stoneCountContr = redStoneCount;
|
|
|
- }
|
|
|
- case 4 -> {
|
|
|
- long tempContribScore = contribScore;
|
|
|
- redContribCount = (sevenSigns().getMaxPlayerContrib() - tempContribScore) / SevenSigns.RED_CONTRIB_POINTS;
|
|
|
- if (redContribCount > redStoneCount) {
|
|
|
- redContribCount = redStoneCount;
|
|
|
- }
|
|
|
- tempContribScore += redContribCount * SevenSigns.RED_CONTRIB_POINTS;
|
|
|
- greenContribCount = (sevenSigns().getMaxPlayerContrib() - tempContribScore) / SevenSigns.GREEN_CONTRIB_POINTS;
|
|
|
- if (greenContribCount > greenStoneCount) {
|
|
|
- greenContribCount = greenStoneCount;
|
|
|
- }
|
|
|
- tempContribScore += greenContribCount * SevenSigns.GREEN_CONTRIB_POINTS;
|
|
|
- blueContribCount = (sevenSigns().getMaxPlayerContrib() - tempContribScore) / SevenSigns.BLUE_CONTRIB_POINTS;
|
|
|
- if (blueContribCount > blueStoneCount) {
|
|
|
- blueContribCount = blueStoneCount;
|
|
|
- }
|
|
|
- if (redContribCount > 0) {
|
|
|
- if (player.destroyItemByItemId("SevenSigns", SevenSigns.SEAL_STONE_RED_ID, redContribCount, this, false)) {
|
|
|
- stonesFound = true;
|
|
|
- SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.S2_S1_DISAPPEARED);
|
|
|
- msg.addItemName(SevenSigns.SEAL_STONE_RED_ID);
|
|
|
- msg.addLong(redContribCount);
|
|
|
- player.sendPacket(msg);
|
|
|
- }
|
|
|
- }
|
|
|
- if (greenContribCount > 0) {
|
|
|
- if (player.destroyItemByItemId("SevenSigns", SevenSigns.SEAL_STONE_GREEN_ID, greenContribCount, this, false)) {
|
|
|
- stonesFound = true;
|
|
|
- SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.S2_S1_DISAPPEARED);
|
|
|
- msg.addItemName(SevenSigns.SEAL_STONE_GREEN_ID);
|
|
|
- msg.addLong(greenContribCount);
|
|
|
- player.sendPacket(msg);
|
|
|
- }
|
|
|
- }
|
|
|
- if (blueContribCount > 0) {
|
|
|
- if (player.destroyItemByItemId("SevenSigns", SevenSigns.SEAL_STONE_BLUE_ID, blueContribCount, this, false)) {
|
|
|
- stonesFound = true;
|
|
|
- SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.S2_S1_DISAPPEARED);
|
|
|
- msg.addItemName(SevenSigns.SEAL_STONE_BLUE_ID);
|
|
|
- msg.addLong(blueContribCount);
|
|
|
- player.sendPacket(msg);
|
|
|
- }
|
|
|
- }
|
|
|
- if (!stonesFound) {
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, val, "dawn_no_stones", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, val, "dusk_no_stones", false);
|
|
|
- }
|
|
|
- } else {
|
|
|
- contribScore = SevenSigns.getInstance().addPlayerStoneContrib(player.getObjectId(), blueContribCount, greenContribCount, redContribCount);
|
|
|
- sm = SystemMessage.getSystemMessage(SystemMessageId.CONTRIB_SCORE_INCREASED_S1);
|
|
|
- sm.addLong(contribScore);
|
|
|
- player.sendPacket(sm);
|
|
|
-
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, 6, "dawn", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, 6, "dusk", false);
|
|
|
- }
|
|
|
- }
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- path = SevenSigns.SEVEN_SIGNS_HTML_PATH + "signs_6_dawn_contribute.htm";
|
|
|
- } else {
|
|
|
- path = SevenSigns.SEVEN_SIGNS_HTML_PATH + "signs_6_dusk_contribute.htm";
|
|
|
- }
|
|
|
-
|
|
|
- String contentContr = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), path);
|
|
|
-
|
|
|
- if (contentContr != null) {
|
|
|
- contentContr = contentContr.replaceAll("%contribStoneColor%", contribStoneColor);
|
|
|
- contentContr = contentContr.replaceAll("%stoneColor%", stoneColorContr);
|
|
|
- contentContr = contentContr.replaceAll("%stoneCount%", String.valueOf(stoneCountContr));
|
|
|
- contentContr = contentContr.replaceAll("%stoneItemId%", String.valueOf(stoneIdContr));
|
|
|
- contentContr = contentContr.replaceAll("%objectId%", String.valueOf(getObjectId()));
|
|
|
-
|
|
|
- final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
|
|
- html.setHtml(contentContr);
|
|
|
- player.sendPacket(html);
|
|
|
- } else {
|
|
|
- LOG.warn("Problem with HTML text {}", path);
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case 9: // Receive Contribution Rewards
|
|
|
- int playerCabal = SevenSigns.getInstance().getPlayerCabal(player.getObjectId());
|
|
|
- int winningCabal = SevenSigns.getInstance().getCabalHighestScore();
|
|
|
-
|
|
|
- if (SevenSigns.getInstance().isSealValidationPeriod() && (playerCabal == winningCabal)) {
|
|
|
- int ancientAdenaReward = SevenSigns.getInstance().getAncientAdenaReward(player.getObjectId(), true);
|
|
|
-
|
|
|
- if (ancientAdenaReward < 3) {
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, 9, "dawn_b", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, 9, "dusk_b", false);
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- player.addAncientAdena("SevenSigns", ancientAdenaReward, this, true);
|
|
|
-
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, 9, "dawn_a", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, 9, "dusk_a", false);
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case 11: // Teleport to Hunting Grounds
|
|
|
- try {
|
|
|
- String portInfo = command.substring(14).trim();
|
|
|
- StringTokenizer st = new StringTokenizer(portInfo);
|
|
|
-
|
|
|
- int x = Integer.parseInt(st.nextToken());
|
|
|
- int y = Integer.parseInt(st.nextToken());
|
|
|
- int z = Integer.parseInt(st.nextToken());
|
|
|
-
|
|
|
- long ancientAdenaCost = Long.parseLong(st.nextToken());
|
|
|
-
|
|
|
- if (ancientAdenaCost > 0) {
|
|
|
- if (!player.reduceAncientAdena("SevenSigns", ancientAdenaCost, this, true)) {
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- player.teleToLocation(x, y, z);
|
|
|
- } catch (Exception ex) {
|
|
|
- LOG.warn("Error occurred while teleporting player!", ex);
|
|
|
- }
|
|
|
- break;
|
|
|
- case 16:
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, val, "dawn", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, val, "dusk", false);
|
|
|
- }
|
|
|
- break;
|
|
|
- case 17: // Exchange Seal Stones for Ancient Adena (Type Choice) - SevenSigns 17 x
|
|
|
- stoneType = Integer.parseInt(command.substring(14));
|
|
|
-
|
|
|
- int stoneId = 0;
|
|
|
- long stoneCount = 0;
|
|
|
- int stoneValue = 0;
|
|
|
-
|
|
|
- String stoneColor = null;
|
|
|
-
|
|
|
- switch (stoneType) {
|
|
|
- case 1 -> {
|
|
|
- stoneColor = "blue";
|
|
|
- stoneId = SevenSigns.SEAL_STONE_BLUE_ID;
|
|
|
- stoneValue = SevenSigns.SEAL_STONE_BLUE_VALUE;
|
|
|
- }
|
|
|
- case 2 -> {
|
|
|
- stoneColor = "green";
|
|
|
- stoneId = SevenSigns.SEAL_STONE_GREEN_ID;
|
|
|
- stoneValue = SevenSigns.SEAL_STONE_GREEN_VALUE;
|
|
|
- }
|
|
|
- case 3 -> {
|
|
|
- stoneColor = "red";
|
|
|
- stoneId = SevenSigns.SEAL_STONE_RED_ID;
|
|
|
- stoneValue = SevenSigns.SEAL_STONE_RED_VALUE;
|
|
|
- }
|
|
|
- case 4 -> {
|
|
|
- L2ItemInstance blueStonesAll = player.getInventory().getItemByItemId(SevenSigns.SEAL_STONE_BLUE_ID);
|
|
|
- L2ItemInstance greenStonesAll = player.getInventory().getItemByItemId(SevenSigns.SEAL_STONE_GREEN_ID);
|
|
|
- L2ItemInstance redStonesAll = player.getInventory().getItemByItemId(SevenSigns.SEAL_STONE_RED_ID);
|
|
|
- long blueStoneCountAll = blueStonesAll == null ? 0 : blueStonesAll.getCount();
|
|
|
- long greenStoneCountAll = greenStonesAll == null ? 0 : greenStonesAll.getCount();
|
|
|
- long redStoneCountAll = redStonesAll == null ? 0 : redStonesAll.getCount();
|
|
|
- long ancientAdenaRewardAll;
|
|
|
- ancientAdenaRewardAll = SevenSigns.calcAncientAdenaReward(blueStoneCountAll, greenStoneCountAll, redStoneCountAll);
|
|
|
- if (ancientAdenaRewardAll == 0) {
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, 18, "dawn_no_stones", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, 18, "dusk_no_stones", false);
|
|
|
- }
|
|
|
- return;
|
|
|
- }
|
|
|
- if (blueStoneCountAll > 0) {
|
|
|
- player.destroyItemByItemId("SevenSigns", SevenSigns.SEAL_STONE_BLUE_ID, blueStoneCountAll, this, true);
|
|
|
- }
|
|
|
- if (greenStoneCountAll > 0) {
|
|
|
- player.destroyItemByItemId("SevenSigns", SevenSigns.SEAL_STONE_GREEN_ID, greenStoneCountAll, this, true);
|
|
|
- }
|
|
|
- if (redStoneCountAll > 0) {
|
|
|
- player.destroyItemByItemId("SevenSigns", SevenSigns.SEAL_STONE_RED_ID, redStoneCountAll, this, true);
|
|
|
- }
|
|
|
- player.addAncientAdena("SevenSigns", ancientAdenaRewardAll, this, true);
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, 18, "dawn", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, 18, "dusk", false);
|
|
|
- }
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- L2ItemInstance stoneInstance = player.getInventory().getItemByItemId(stoneId);
|
|
|
-
|
|
|
- if (stoneInstance != null) {
|
|
|
- stoneCount = stoneInstance.getCount();
|
|
|
- }
|
|
|
-
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- path = SevenSigns.SEVEN_SIGNS_HTML_PATH + "signs_17_dawn.htm";
|
|
|
- } else {
|
|
|
- path = SevenSigns.SEVEN_SIGNS_HTML_PATH + "signs_17_dusk.htm";
|
|
|
- }
|
|
|
-
|
|
|
- String content = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), path);
|
|
|
-
|
|
|
- if (content != null) {
|
|
|
- content = content.replaceAll("%stoneColor%", stoneColor);
|
|
|
- content = content.replaceAll("%stoneValue%", String.valueOf(stoneValue));
|
|
|
- content = content.replaceAll("%stoneCount%", String.valueOf(stoneCount));
|
|
|
- content = content.replaceAll("%stoneItemId%", String.valueOf(stoneId));
|
|
|
- content = content.replaceAll("%objectId%", String.valueOf(getObjectId()));
|
|
|
-
|
|
|
- final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
|
|
- html.setHtml(content);
|
|
|
- player.sendPacket(html);
|
|
|
- } else {
|
|
|
- LOG.warn("Problem with HTML text {} signs_17.htm: {}", SevenSigns.SEVEN_SIGNS_HTML_PATH, path);
|
|
|
- }
|
|
|
- break;
|
|
|
- case 18: // Exchange Seal Stones for Ancient Adena - SevenSigns 18 xxxx xxxxxx
|
|
|
- int convertStoneId = Integer.parseInt(command.substring(14, 18));
|
|
|
- long convertCount;
|
|
|
-
|
|
|
- try {
|
|
|
- convertCount = Long.parseLong(command.substring(19).trim());
|
|
|
- } catch (Exception NumberFormatException) {
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, 18, "dawn_failed", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, 18, "dusk_failed", false);
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- L2ItemInstance convertItem = player.getInventory().getItemByItemId(convertStoneId);
|
|
|
-
|
|
|
- if (convertItem != null) {
|
|
|
- long ancientAdenaReward = 0;
|
|
|
- long totalCount = convertItem.getCount();
|
|
|
-
|
|
|
- if ((convertCount <= totalCount) && (convertCount > 0)) {
|
|
|
- switch (convertStoneId) {
|
|
|
- case SevenSigns.SEAL_STONE_BLUE_ID -> ancientAdenaReward = SevenSigns.calcAncientAdenaReward(convertCount, 0, 0);
|
|
|
- case SevenSigns.SEAL_STONE_GREEN_ID -> ancientAdenaReward = SevenSigns.calcAncientAdenaReward(0, convertCount, 0);
|
|
|
- case SevenSigns.SEAL_STONE_RED_ID -> ancientAdenaReward = SevenSigns.calcAncientAdenaReward(0, 0, convertCount);
|
|
|
- }
|
|
|
-
|
|
|
- if (player.destroyItemByItemId("SevenSigns", convertStoneId, convertCount, this, true)) {
|
|
|
- player.addAncientAdena("SevenSigns", ancientAdenaReward, this, true);
|
|
|
-
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, 18, "dawn", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, 18, "dusk", false);
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, 18, "dawn_low_stones", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, 18, "dusk_low_stones", false);
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- showChatWindow(player, 18, "dawn_no_stones", false);
|
|
|
- } else {
|
|
|
- showChatWindow(player, 18, "dusk_no_stones", false);
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- break;
|
|
|
- case 19: // Seal Information (for when joining a cabal)
|
|
|
- int chosenSeal = Integer.parseInt(command.substring(16));
|
|
|
-
|
|
|
- String fileSuffix = SevenSigns.getSealName(chosenSeal, true) + "_" + SevenSigns.getCabalShortName(cabal);
|
|
|
-
|
|
|
- showChatWindow(player, val, fileSuffix, false);
|
|
|
- break;
|
|
|
- case 20: // Seal Status (for when joining a cabal)
|
|
|
- StringBuilder contentBuffer = new StringBuilder();
|
|
|
- if (this instanceof L2DawnPriestInstance) {
|
|
|
- contentBuffer.append("<html><body>Priest of Dawn:<br><font color=\"LEVEL\">[ Seal Status ]</font><br>");
|
|
|
- } else {
|
|
|
- contentBuffer.append("<html><body>Dusk Priestess:<br><font color=\"LEVEL\">[ Status of the Seals ]</font><br>");
|
|
|
- }
|
|
|
-
|
|
|
- for (int i = 1; i < 4; i++) {
|
|
|
- int sealOwner = SevenSigns.getInstance().getSealOwner(i);
|
|
|
-
|
|
|
- if (sealOwner != SevenSigns.CABAL_NULL) {
|
|
|
- contentBuffer.append("[").append(SevenSigns.getSealName(i, false)).append(": ").append(SevenSigns.getCabalName(sealOwner)).append("]<br>");
|
|
|
- } else {
|
|
|
- contentBuffer.append("[").append(SevenSigns.getSealName(i, false)).append(": Nothingness]<br>");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- contentBuffer.append("<a action=\"bypass -h npc_").append(getObjectId()).append("_Chat 0\">Go back.</a></body></html>");
|
|
|
-
|
|
|
- final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
|
|
|
- html.setHtml(contentBuffer.toString());
|
|
|
- player.sendPacket(html);
|
|
|
- break;
|
|
|
- default:
|
|
|
- showChatWindow(player, val, null, false);
|
|
|
- break;
|
|
|
- }
|
|
|
- } else {
|
|
|
- super.onBypassFeedback(player, command);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void showChatWindow(L2PcInstance player, int val, String suffix, boolean isDescription) {
|
|
|
- String filename = SevenSigns.SEVEN_SIGNS_HTML_PATH;
|
|
|
-
|
|
|
- filename += (isDescription) ? "desc_" + val : "signs_" + val;
|
|
|
- filename += (suffix != null) ? "_" + suffix + ".htm" : ".htm";
|
|
|
-
|
|
|
- showChatWindow(player, filename);
|
|
|
- }
|
|
|
-}
|