Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Evento Fifth Anniversary (l2day)

Iniciado por Swarlog, Jun 28, 2025, 11:36 PM

Tema anterior - Siguiente tema

Swarlog

/*
 * This program 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.
 *
 * This program 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 events.FifthAnniversary;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;

import com.l2jserver.gameserver.Announcements;
import com.l2jserver.gameserver.datatables.EventDroplist;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.script.DateRange;
import com.l2jserver.util.Rnd;

public class FifthAnniversary extends Quest
{
	private static final String EVENT_DATE = "28 03 2011-05 05 2011";	// Change date as you want
	private static final DateRange EVENT_DATES = DateRange.parse(EVENT_DATE, new SimpleDateFormat("dd MM yyyy", Locale.US));
	private static final String[] EVENT_ANNOUNCE = {"5th Anniversary Event is currently active."};
	private static final Date EndDate = EVENT_DATES.getEndDate();
	private static final Date currentDate = new Date();
	
	//Items
	private final static int letterL = 3882;
	private final static int letterI = 3881;
	private final static int letterN = 3883;
	private final static int letterE = 3877;
	private final static int letterA = 3875;
	private final static int letterG = 3879;
	private final static int letterII = 3888;
	private final static int letter5 = 13418;
	private final static int letterY = 13417;
	private final static int letterR = 3885;
	private final static int letterS = 3886;
	private final static int letterC = 3876;
	private final static int[] dropList = { letterL, letterI, letterN, letterE, letterA, letterG, letterII, letter5, letterY, letterR, letterS, letterC };
	private int[] dropCount = {1,1};
	private final static int dropChance = 25000;	// actually 2.5%
                                                 // Goddard,Aden,Giran, Oren,Dion,Heine,Gludio,Schuttgart,Gludin,Hunters,Rune,SoDA,Dark Elf,TI,Dwarf,Orc,Kamael
	private final static int[] EventSpawnX = { 147698,147443,82227,82754,15064,111067,-12965,87362,  -81037,117412,43983,-45907,12153,-84458,114750,-45656,-117195 };
	private final static int[] EventSpawnY = { -56025,26942,148609,53573,143254,218933,122914,143166,150092,76642,-47758,49387,16753,244761,-178692,-113119,46837 };
	private final static int[] EventSpawnZ = { -2775,-2205,-3472,-1496,-2668,-3543,-3117,-1293,      -3044,-2695,-797,-3060,-4584,-3730,-820,-240,367 };

	private final static int EventNPC = 31854;
	
	private static List<L2Npc> eventManagers = new ArrayList<L2Npc>();

	private static boolean FifthAnniversaryEvent = false;
	
	public FifthAnniversary(int questId, String name, String descr)
	{
		super(questId, name, descr);

        EventDroplist.getInstance().addGlobalDrop(dropList, dropCount, dropChance, EVENT_DATES);
        
        Announcements.getInstance().addEventAnnouncement(EVENT_DATES,EVENT_ANNOUNCE); 

        addStartNpc(EventNPC);
		addFirstTalkId(EventNPC);
		addTalkId(EventNPC);
		startQuestTimer("EventCheck",1800000,null,null);
		
		if (EVENT_DATES.isWithinRange(currentDate))
			FifthAnniversaryEvent = true;

		if (FifthAnniversaryEvent)
		{
			_log.info("5th Anniversary Event - ON");

			for (int i = 0; i < EventSpawnX.length; i++)
			{
				L2Npc eventManager = addSpawn(EventNPC,EventSpawnX[i],EventSpawnY[i],EventSpawnZ[i],0,false,0);
				eventManagers.add(eventManager);
			}
		}
		else
		{
			_log.info("5th Anniversary Event - OFF");

			Calendar endWeek = Calendar.getInstance();
			endWeek.setTime(EndDate);
			endWeek.add(Calendar.DATE, 7);
			
			if (EndDate.before(currentDate) && endWeek.getTime().after(currentDate))
			{
				for (int i = 0; i < EventSpawnX.length; i++)
				{
					L2Npc eventManager = addSpawn(EventNPC,EventSpawnX[i],EventSpawnY[i],EventSpawnZ[i],0,false,0);
					eventManagers.add(eventManager);
				}
			}
		}
	}
	
	public String onAdvEvent (String event, L2Npc npc, L2PcInstance player)
	{
		String htmltext = "";
		QuestState st;
		int prize;

		if (npc == null)
		{
			if (event.equalsIgnoreCase("EventCheck"))
			{
				startQuestTimer("EventCheck",1800000,null,null);
				boolean Event1 = false;
				
				if (EVENT_DATES.isWithinRange(currentDate))
					Event1 = true;

				if (!FifthAnniversaryEvent && Event1)
				{
					FifthAnniversaryEvent = true;
					_log.info("5th Anniversary Event - ON");
					Announcements.getInstance().announceToAll("5th Anniversary Event is currently active. See the Event NPCs to participate!");

					for (int i = 0; i < EventSpawnX.length; i++)
					{
						L2Npc eventManager = addSpawn(EventNPC,EventSpawnX[i],EventSpawnY[i],EventSpawnZ[i],0,false,0);
						eventManagers.add(eventManager);
					}
				}
				else if (FifthAnniversaryEvent && !Event1)
				{
					FifthAnniversaryEvent = false;
					_log.info("5th Anniversary Event - OFF");
					for (L2Npc eventManager : eventManagers)
					{
						eventManager.deleteMe();
					}
				}
			}
		}
		else if (player != null && event.equalsIgnoreCase("LINEAGEII"))
		{
		    st = player.getQuestState(getName());

			if ( st.getQuestItemsCount(letterL) >= 1
				&& st.getQuestItemsCount(letterI) >= 1
				&& st.getQuestItemsCount(letterN) >= 1
				&& st.getQuestItemsCount(letterE) >= 2
				&& st.getQuestItemsCount(letterA) >= 1
				&& st.getQuestItemsCount(letterG) >= 1
				&& st.getQuestItemsCount(letterII) >= 1)
			{
				st.takeItems(letterL,1);
	            st.takeItems(letterI,1);
	            st.takeItems(letterN,1);
	            st.takeItems(letterE,2);
	            st.takeItems(letterA,1);
	            st.takeItems(letterG,1);
	            st.takeItems(letterII,1);
	            
	            prize = Rnd.get(1000);
	            
	            if (prize <= 5)
	                st.giveItems(6662,1); // 1 - Ring of Core
	            else if (prize <= 10)
	                st.giveItems(8752,1); // 1 - High grade Life Stone 76
	            else if (prize <= 25)
	                st.giveItems(8742,1); // 1 - Mid grade Life Stone 76
	            else if (prize <= 50)
	                st.giveItems(9157,1); // 1 - L2day Blessed SoR
	            else if (prize <= 75)
	                st.giveItems(9156,1); // 1 - L2day Blessed SoE
	            else if (prize <= 100)
	                st.giveItems(13429,1); // 1 - Teddy Bear Hat
	            else if (prize <= 200)
	                st.giveItems(13430,1); // 1 - Piggy Hat
	            else if (prize <= 300)
	                st.giveItems(13431,1); // 1 - Jester Hat
	            else if (prize <= 400)
	                st.giveItems(13425,1); // 1 - Small Parchement Box (1x Village Soe)
	            else if (prize <= 500)
	                st.giveItems(13426,1); // 1 - Small Mineral Box (1x Elemental Stone)
	            else
	                st.giveItems(13428,1); // 1 - Small Libation Box (1x L2Day Juice)
		    }
			else
				htmltext = "31854-03.htm";
		}
		else if (player != null && event.equalsIgnoreCase("5YEARS"))
		{
		    st = player.getQuestState(getName());

			if (st.getQuestItemsCount(letter5) >= 1
	        	&& st.getQuestItemsCount(letterY) >= 1
	        	&& st.getQuestItemsCount(letterE) >= 1
	        	&& st.getQuestItemsCount(letterA) >= 1
	        	&& st.getQuestItemsCount(letterR) >= 1
	        	&& st.getQuestItemsCount(letterS) >= 1)
	        {
	            st.takeItems(letter5,1);
	            st.takeItems(letterY,1);
	            st.takeItems(letterE,1);
	            st.takeItems(letterA,1);
	            st.takeItems(letterR,1);
	            st.takeItems(letterS,1);
	            
	            prize = Rnd.get(1000);
	            
	            if (prize <= 5)
	                st.giveItems(6660,1); // 1 - Ring of Queen Ant
	            else if (prize <= 10)
	                st.giveItems(8762,1); // 1 - Top grade Life Stone 76
	            else if (prize <= 25)
	                st.giveItems(8752,2); // 2 - High grade Life Stones 76
	            else if (prize <= 50)
	                st.giveItems(9157,2); // 2 - L2day Blessed SoRs
	            else if (prize <= 75)
	                st.giveItems(9156,2); // 2 - L2day Blessed SoEs
	            else if (prize <= 100)
	                st.giveItems(13429,1); // 1 - Teddy Bear Hat
	            else if (prize <= 150)
	                st.giveItems(13430,1); // 1 - Piggy Hat
	            else if (prize <= 200)
	                st.giveItems(13431,1); // 1 - Jester Hat
	            else if (prize <= 300)
	                st.giveItems(13422,2); // 1 - Medium Parchement Box (2x Village Soes)
	            else if (prize <= 400)
	                st.giveItems(13423,2); // 1 - Medium Mineral Box (2x Elemental Stones)
	            else
	                st.giveItems(13424,3); // 1 - Large Libation Box (3x L2Day Juices)
	        }
	        else
	        	htmltext =  "31854-03.htm";
		}
		else if (player != null && event.equalsIgnoreCase("GRACIA"))
		{
		    st = player.getQuestState(getName());

		    if (st.getQuestItemsCount(letterG) >= 1
	        	&& st.getQuestItemsCount(letterR) >= 1
	        	&& st.getQuestItemsCount(letterA) >= 2
	        	&& st.getQuestItemsCount(letterC) >= 1
	        	&& st.getQuestItemsCount(letterI) >= 1)
	        {
	            st.takeItems(letterG,1);
	            st.takeItems(letterR,1);
	            st.takeItems(letterA,2);
	            st.takeItems(letterC,1);
	            st.takeItems(letterI,1);
	            
	            prize = Rnd.get(1000);
	            
	            if (prize <= 5)
	                st.giveItems(6661,1); // 1 - Earring of Orfen
	            else if (prize <= 10)
	                st.giveItems(8752,1); // 1 - High grade Life Stone 76
	            else if (prize <= 25)
	                st.giveItems(8742,2); // 2 - Mid grade Life Stones 76
	            else if (prize <= 50)
	                st.giveItems(9157,1); // 1 - L2day Blessed SoR
	            else if (prize <= 75)
	                st.giveItems(9156,1); // 1 - L2day Blessed SoE
	            else if (prize <= 100)
	                st.giveItems(13429,1); // 1 - Teddy Bear Hat
	            else if (prize <= 150)
	                st.giveItems(13430,1); // 1 - Piggy Hat
	            else if (prize <= 200)
	                st.giveItems(13431,1); // 1 - Jester Hat
	            else if (prize <= 300)
	                st.giveItems(13425,1); // 1 - Small Parchement Box (1x Village Soe)
	            else if (prize <= 400)
	                st.giveItems(13426,1); // 1 - Small Mineral Box (1x Elemental Stone)
	            else
	                st.giveItems(13424,2); // 1 - Medium Libation Box (2x L2Day Juices)
	        }
	        else
	        	htmltext =  "31854-03.htm";
		}
		else if (event.equalsIgnoreCase("chat0"))
			htmltext =  "31854.htm";
		else if (event.equalsIgnoreCase("chat1"))
			htmltext =  "31854-02.htm";
		
		return htmltext;
	}	

	@Override
	public String onFirstTalk(L2Npc npc,L2PcInstance player)
	{
		QuestState st = player.getQuestState(getName());
		if (st == null)
			st = newQuestState(player);

		return "31854.htm";
	}

	public static void main(String[] args)
	{
		new FifthAnniversary(-1, "FifthAnniversary", "events");
	}
}