Slightly modified Saving Santa event for Epilogue.
This commit is contained in:
parent
088500b750
commit
80814061df
786
L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/events/SavingSanta/SavingSanta.java
vendored
Normal file
786
L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/events/SavingSanta/SavingSanta.java
vendored
Normal file
@ -0,0 +1,786 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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.SavingSanta;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.l2jmobius.commons.concurrent.ThreadPool;
|
||||
import org.l2jmobius.gameserver.ai.CtrlIntention;
|
||||
import org.l2jmobius.gameserver.data.xml.impl.SkillData;
|
||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||
import org.l2jmobius.gameserver.enums.ChatType;
|
||||
import org.l2jmobius.gameserver.enums.QuestSound;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.quest.LongTimeEvent;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.NpcSay;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||
import org.l2jmobius.gameserver.util.Broadcast;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* Christmas Event: Saving Santa<br>
|
||||
* http://legacy.lineage2.com/archive/2008/12/saving_santa_ev.html<br>
|
||||
* TODO:<br>
|
||||
* 1) Heading for Santa's Helpers.<br>
|
||||
* 2) Unhardcode HTMLs.<br>
|
||||
* @author Zoey76, Mobius
|
||||
*/
|
||||
public class SavingSanta extends LongTimeEvent
|
||||
{
|
||||
private boolean _isSantaFree = true;
|
||||
private boolean _isJackPot = false;
|
||||
private boolean _isWaitingForPlayerSkill = false;
|
||||
private static final List<Npc> _santaHelpers = new ArrayList<>();
|
||||
private static final List<Npc> _specialTrees = new ArrayList<>();
|
||||
private static final Map<String, Long> _rewardedPlayers = new ConcurrentHashMap<>();
|
||||
private static final Map<String, Long> _blessedPlayers = new ConcurrentHashMap<>();
|
||||
|
||||
// Is Saving Santa event used?
|
||||
private static boolean SAVING_SANTA = true;
|
||||
// Use Santa's Helpers Auto Buff?
|
||||
private static boolean SANTAS_HELPER_AUTOBUFF = false;
|
||||
|
||||
private static final ItemHolder[] TREE_REQUIRED_ITEMS =
|
||||
{
|
||||
new ItemHolder(5556, 4),
|
||||
new ItemHolder(5557, 4),
|
||||
new ItemHolder(5558, 10),
|
||||
new ItemHolder(5559, 1)
|
||||
};
|
||||
|
||||
//@formatter:off
|
||||
private static final int SANTA_TRAINEE_ID = 31863;
|
||||
private static final int SPECIAL_CHRISTMAS_TREE_ID = 13007;
|
||||
private static final int HOLIDAY_SANTA_ID = 5;
|
||||
private static final int HOLIDAY_SLED_ID = 6;
|
||||
private static final int THOMAS_D_TURKEY_ID = 13183;
|
||||
private static final long MIN_TIME_BETWEEN_2_REWARDS = 43200000;
|
||||
private static final long MIN_TIME_BETWEEN_2_BLESSINGS = 14400000;
|
||||
private static final int BR_XMAS_PRESENT_NORMAL = 20101;
|
||||
private static final int BR_XMAS_PRESENT_JACKPOT = 20102;
|
||||
private static final int BR_XMAS_WPN_TICKET_NORMAL = 20107;
|
||||
private static final int BR_XMAS_WPN_TICKET_JACKPOT = 20108;
|
||||
private static final int BR_XMAS_REWARD_BUFF = 23017;
|
||||
private static final int BR_XMAS_GAWIBAWIBO_CAP = 20100;
|
||||
private static final int X_MAS_TREE1 = 5560;
|
||||
private static final int X_MAS_TREE2 = 5561;
|
||||
private static final int SANTAS_HAT_ID = 7836;
|
||||
private static final int[] WEAPON_REWARDS = {14621, 14622, 14625, 14623, 14624, 14630, 14631, 14628, 14627, 14626, 14674, 14632, 14634, 14633};
|
||||
private static final Location THOMAS_SPAWN = new Location(117935, -126003, -2585, 54625);
|
||||
private static final int[] SANTA_MAGE_BUFFS = {7055, 7054, 7051};
|
||||
private static final int[] SANTA_FIGHTER_BUFFS = {7043, 7057, 7051};
|
||||
//@formatter:on
|
||||
|
||||
private static final NpcStringId[] NPC_STRINGS =
|
||||
{
|
||||
NpcStringId.IT_S_HURTING_I_M_IN_PAIN_WHAT_CAN_I_DO_FOR_THE_PAIN,
|
||||
NpcStringId.NO_WHEN_I_LOSE_THAT_ONE_I_LL_BE_IN_MORE_PAIN,
|
||||
NpcStringId.HAHAHAH_I_CAPTURED_SANTA_CLAUS_THERE_WILL_BE_NO_GIFTS_THIS_YEAR,
|
||||
NpcStringId.NOW_WHY_DON_T_YOU_TAKE_UP_THE_CHALLENGE,
|
||||
NpcStringId.COME_ON_I_LL_TAKE_ALL_OF_YOU_ON,
|
||||
NpcStringId.HOW_ABOUT_IT_I_THINK_I_WON,
|
||||
NpcStringId.NOW_THOSE_OF_YOU_WHO_LOST_GO_AWAY,
|
||||
NpcStringId.WHAT_A_BUNCH_OF_LOSERS,
|
||||
NpcStringId.I_GUESS_YOU_CAME_TO_RESCUE_SANTA_BUT_YOU_PICKED_THE_WRONG_PERSON,
|
||||
NpcStringId.AH_OKAY,
|
||||
NpcStringId.AGH_I_WASN_T_GOING_TO_DO_THAT,
|
||||
NpcStringId.YOU_RE_CURSED_OH_WHAT,
|
||||
NpcStringId.STOP_IT_NO_MORE_I_DID_IT_BECAUSE_I_WAS_TOO_LONELY,
|
||||
NpcStringId.I_HAVE_TO_RELEASE_SANTA_HOW_INFURIATING,
|
||||
NpcStringId.I_HATE_HAPPY_MERRY_CHRISTMAS,
|
||||
NpcStringId.OH_I_M_BORED,
|
||||
NpcStringId.SHALL_I_GO_TO_TAKE_A_LOOK_IF_SANTA_IS_STILL_THERE_HEHE,
|
||||
NpcStringId.OH_HO_HO_MERRY_CHRISTMAS,
|
||||
NpcStringId.SANTA_COULD_GIVE_NICE_PRESENTS_ONLY_IF_HE_S_RELEASED_FROM_THE_TURKEY,
|
||||
NpcStringId.OH_HO_HO_OH_HO_HO_THANK_YOU_LADIES_AND_GENTLEMEN_I_WILL_REPAY_YOU_FOR_SURE,
|
||||
NpcStringId.MERRY_CHRISTMAS_YOU_RE_DOING_A_GOOD_JOB,
|
||||
NpcStringId.MERRY_CHRISTMAS_THANK_YOU_FOR_RESCUING_ME_FROM_THAT_WRETCHED_TURKEY,
|
||||
NpcStringId.S1_I_HAVE_PREPARED_A_GIFT_FOR_YOU,
|
||||
NpcStringId.I_HAVE_A_GIFT_FOR_S1,
|
||||
NpcStringId.TAKE_A_LOOK_AT_THE_INVENTORY_I_HOPE_YOU_LIKE_THE_GIFT_I_GAVE_YOU,
|
||||
NpcStringId.TAKE_A_LOOK_AT_THE_INVENTORY_PERHAPS_THERE_MIGHT_BE_A_BIG_PRESENT,
|
||||
NpcStringId.I_M_TIRED_OF_DEALING_WITH_YOU_I_M_LEAVING,
|
||||
NpcStringId.WHEN_ARE_YOU_GOING_TO_STOP_I_SLOWLY_STARTED_TO_BE_TIRED_OF_IT,
|
||||
NpcStringId.MESSAGE_FROM_SANTA_CLAUS_MANY_BLESSINGS_TO_S1_WHO_SAVED_ME
|
||||
};
|
||||
|
||||
public SavingSanta()
|
||||
{
|
||||
if (!isEventPeriod())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
addStartNpc(SANTA_TRAINEE_ID);
|
||||
addFirstTalkId(SANTA_TRAINEE_ID);
|
||||
addTalkId(SANTA_TRAINEE_ID);
|
||||
addFirstTalkId(THOMAS_D_TURKEY_ID);
|
||||
addFirstTalkId(HOLIDAY_SANTA_ID);
|
||||
addFirstTalkId(HOLIDAY_SLED_ID);
|
||||
addSkillSeeId(THOMAS_D_TURKEY_ID);
|
||||
addSpellFinishedId(THOMAS_D_TURKEY_ID);
|
||||
addSpawnId(SPECIAL_CHRISTMAS_TREE_ID);
|
||||
|
||||
startQuestTimer("SpecialTreeHeal", 5000, null, null);
|
||||
if (SAVING_SANTA)
|
||||
{
|
||||
startQuestTimer("ThomasQuest", 1000, null, null);
|
||||
}
|
||||
if (SANTAS_HELPER_AUTOBUFF)
|
||||
{
|
||||
startQuestTimer("SantaBlessings", 5000, null, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
_specialTrees.add(npc);
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSkillSee(Npc npc, PlayerInstance caster, Skill skill, WorldObject[] targets, boolean isSummon)
|
||||
{
|
||||
if (_isWaitingForPlayerSkill && (skill.getId() > 21013) && (skill.getId() < 21017))
|
||||
{
|
||||
caster.broadcastPacket(new MagicSkillUse(caster, caster, 23019, skill.getId() - 21013, 3000, 1));
|
||||
SkillData.getInstance().getSkill(23019, skill.getId() - 21013).applyEffects(caster, caster);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpellFinished(Npc npc, PlayerInstance player, Skill skill)
|
||||
{
|
||||
// Turkey's Choice
|
||||
// Level 1: Scissors
|
||||
// Level 2: Rock
|
||||
// Level 3: Paper
|
||||
if (skill.getId() == 6100)
|
||||
{
|
||||
_isWaitingForPlayerSkill = false;
|
||||
for (PlayerInstance pl : World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 600))
|
||||
{
|
||||
// Level 1: Scissors
|
||||
// Level 2: Rock
|
||||
// Level 3: Paper
|
||||
if (!pl.isAffectedBySkill(23019))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
int result = pl.getEffectList().getBuffInfoBySkillId(23019).getSkill().getLevel() - skill.getLevel();
|
||||
|
||||
if (result == 0)
|
||||
{
|
||||
// Oh. I'm bored.
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NPC_STRINGS[15]));
|
||||
}
|
||||
else if ((result == -1) || (result == 2))
|
||||
{
|
||||
// Now!! Those of you who lost, go away!
|
||||
// What a bunch of losers.
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NPC_STRINGS[6 + getRandom(2)]));
|
||||
pl.broadcastPacket(new MagicSkillUse(pl, pl, 23023, 1, 3000, 1));
|
||||
pl.getEffectList().stopSkillEffects(true, 23022);
|
||||
}
|
||||
else if ((result == 1) || (result == -2))
|
||||
{
|
||||
int level = (pl.isAffectedBySkill(23022) ? (pl.getEffectList().getBuffInfoBySkillId(23022).getSkill().getLevel() + 1) : 1);
|
||||
pl.broadcastPacket(new MagicSkillUse(pl, pl, 23022, level, 3000, 1));
|
||||
SkillData.getInstance().getSkill(23022, level).applyEffects(pl, pl);
|
||||
|
||||
if ((level == 1) || (level == 2))
|
||||
{
|
||||
// Ah, okay...
|
||||
// Agh!! I wasn't going to do that!
|
||||
// You're cursed!! Oh.. What?
|
||||
// Have you done nothing but rock-paper-scissors??
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NPC_STRINGS[10 + getRandom(4)]));
|
||||
}
|
||||
else if (level == 3)
|
||||
{
|
||||
SkillData.getInstance().getSkill(23018, 1).applyEffects(pl, pl);
|
||||
// Stop it, no more... I did it because I was too lonely...
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NPC_STRINGS[13]));
|
||||
}
|
||||
else if (level == 4)
|
||||
{
|
||||
Broadcast.toAllOnlinePlayers(new SystemMessage(SystemMessageId.YOU_HAVE_DEFEATED_THOMAS_D_TURKEY_AND_RESCUED_SANTA));
|
||||
// I have to release Santa... How infuriating!!!
|
||||
// I hate happy Merry Christmas!!!
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NPC_STRINGS[14 + getRandom(2)]));
|
||||
|
||||
startQuestTimer("SantaSpawn", 120000, null, null);
|
||||
final Npc holidaySled = addSpawn(HOLIDAY_SLED_ID, 117935, -126003, -2585, 54625, false, 12000);
|
||||
// Message from Santa Claus: Many blessings to $s1, who saved me~
|
||||
final NpcSay santaSaved = new NpcSay(holidaySled.getObjectId(), ChatType.NPC_SHOUT, holidaySled.getId(), NPC_STRINGS[28]);
|
||||
santaSaved.addStringParameter(pl.getName());
|
||||
holidaySled.broadcastPacket(santaSaved);
|
||||
// Oh ho ho.... Merry Christmas!!
|
||||
holidaySled.broadcastPacket(new NpcSay(holidaySled.getObjectId(), ChatType.NPC_GENERAL, holidaySled.getId(), NPC_STRINGS[17]));
|
||||
|
||||
if (getRandom(100) > 90)
|
||||
{
|
||||
_isJackPot = true;
|
||||
pl.addItem("SavingSantaPresent", BR_XMAS_PRESENT_JACKPOT, 1, pl, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
pl.addItem("SavingSantaPresent", BR_XMAS_PRESENT_NORMAL, 1, pl, true);
|
||||
}
|
||||
|
||||
ThreadPool.schedule(new SledAnimation(holidaySled), 7000);
|
||||
npc.decayMe();
|
||||
_isSantaFree = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpellFinished(npc, player, skill);
|
||||
}
|
||||
|
||||
private static class SledAnimation implements Runnable
|
||||
{
|
||||
private final Npc _sled;
|
||||
|
||||
public SledAnimation(Npc sled)
|
||||
{
|
||||
_sled = sled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
try
|
||||
{
|
||||
_sled.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
||||
_sled.broadcastPacket(new SocialAction(_sled.getObjectId(), 1));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// Ignore.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (!isEventPeriod())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = null;
|
||||
if (event.equalsIgnoreCase("ThomasQuest"))
|
||||
{
|
||||
startQuestTimer("ThomasQuest", 14400000, null, null);
|
||||
Npc ThomasDTurkey = addSpawn(THOMAS_D_TURKEY_ID, THOMAS_SPAWN.getX(), THOMAS_SPAWN.getY(), THOMAS_SPAWN.getZ(), THOMAS_SPAWN.getHeading(), false, 1800000);
|
||||
|
||||
Broadcast.toAllOnlinePlayers(new SystemMessage(SystemMessageId.THOMAS_D_TURKEY_HAS_APPEARED_PLEASE_SAVE_SANTA));
|
||||
|
||||
startQuestTimer("ThomasCast1", 15000, ThomasDTurkey, null);
|
||||
|
||||
_isSantaFree = false;
|
||||
}
|
||||
else if (event.equalsIgnoreCase("SantaSpawn"))
|
||||
{
|
||||
if (_isSantaFree)
|
||||
{
|
||||
startQuestTimer("SantaSpawn", 120000, null, null);
|
||||
// for (PlayerInstance pl : L2World.getInstance().getAllPlayers().values())
|
||||
for (PlayerInstance pl : World.getInstance().getPlayers())
|
||||
{
|
||||
if ((pl != null) && pl.isOnline() && (pl.getLevel() >= 20) && pl.isInCombat() && !pl.isInsideZone(ZoneId.PEACE) && !pl.isFlyingMounted())
|
||||
{
|
||||
if (_rewardedPlayers.containsKey(pl.getAccountName()))
|
||||
{
|
||||
long elapsedTimeSinceLastRewarded = System.currentTimeMillis() - _rewardedPlayers.get(pl.getAccountName());
|
||||
if (elapsedTimeSinceLastRewarded < MIN_TIME_BETWEEN_2_REWARDS)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final long time = player.getVariables().getLong("LAST_SANTA_REWARD", 0);
|
||||
if ((System.currentTimeMillis() - time) < MIN_TIME_BETWEEN_2_REWARDS)
|
||||
{
|
||||
_rewardedPlayers.put(pl.getAccountName(), time);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
int locx = (int) (pl.getX() + (Math.pow(-1, getRandom(1, 2)) * 50));
|
||||
int locy = (int) (pl.getY() + (Math.pow(-1, getRandom(1, 2)) * 50));
|
||||
int heading = Util.calculateHeadingFrom(locx, locy, pl.getX(), pl.getY());
|
||||
Npc santa = addSpawn(HOLIDAY_SANTA_ID, locx, locy, pl.getZ(), heading, false, 30000);
|
||||
_rewardedPlayers.put(pl.getAccountName(), System.currentTimeMillis());
|
||||
player.getVariables().set("LAST_SANTA_REWARD", System.currentTimeMillis());
|
||||
startQuestTimer("SantaRewarding0", 500, santa, pl);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (event.equalsIgnoreCase("ThomasCast1"))
|
||||
{
|
||||
if (!npc.isDecayed())
|
||||
{
|
||||
_isWaitingForPlayerSkill = true;
|
||||
startQuestTimer("ThomasCast2", 4000, npc, null);
|
||||
npc.doCast(SkillData.getInstance().getSkill(6116, 1));
|
||||
// It's hurting... I'm in pain... What can I do for the pain...
|
||||
// No... When I lose that one... I'll be in more pain...
|
||||
// Hahahah!!! I captured Santa Claus!! There will be no gifts this year!!!
|
||||
// Now! Why don't you take up the challenge?
|
||||
// Come on, I'll take all of you on!
|
||||
// How about it? I think I won?
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NPC_STRINGS[getRandom(6)]));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!_isSantaFree)
|
||||
{
|
||||
Broadcast.toAllOnlinePlayers(new SystemMessage(SystemMessageId.YOU_DID_NOT_RESCUE_SANTA_AND_THOMAS_D_TURKEY_HAS_DISAPPEARED));
|
||||
_isWaitingForPlayerSkill = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (event.equalsIgnoreCase("ThomasCast2"))
|
||||
{
|
||||
if (!npc.isDecayed())
|
||||
{
|
||||
startQuestTimer("ThomasCast1", 13000, npc, null);
|
||||
npc.doCast(SkillData.getInstance().getSkill(6100, getRandom(1, 3)));
|
||||
// It's hurting... I'm in pain... What can I do for the pain...
|
||||
// No... When I lose that one... I'll be in more pain...
|
||||
// Hahahah!!! I captured Santa Claus!! There will be no gifts this year!!!
|
||||
// Now! Why don't you take up the challenge?
|
||||
// Come on, I'll take all of you on!
|
||||
// How about it? I think I won?
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NPC_STRINGS[getRandom(6)]));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!_isSantaFree)
|
||||
{
|
||||
Broadcast.toAllOnlinePlayers(new SystemMessage(SystemMessageId.YOU_DID_NOT_RESCUE_SANTA_AND_THOMAS_D_TURKEY_HAS_DISAPPEARED));
|
||||
_isWaitingForPlayerSkill = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (event.equalsIgnoreCase("SantaRewarding0"))
|
||||
{
|
||||
startQuestTimer("SantaRewarding1", 9500, npc, player);
|
||||
npc.broadcastPacket(new SocialAction(npc.getObjectId(), 3));
|
||||
}
|
||||
else if (event.equalsIgnoreCase("SantaRewarding1"))
|
||||
{
|
||||
startQuestTimer("SantaRewarding2", 5000, npc, player);
|
||||
npc.broadcastPacket(new SocialAction(npc.getObjectId(), 1));
|
||||
// Merry Christmas~ Thank you for rescuing me from that wretched Turkey.
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NPC_STRINGS[21]));
|
||||
}
|
||||
else if (event.equalsIgnoreCase("SantaRewarding2"))
|
||||
{
|
||||
startQuestTimer("SantaRewarding3", 5000, npc, player);
|
||||
// I have a gift for $s1.
|
||||
final NpcSay iHaveAGift = new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NPC_STRINGS[23]);
|
||||
iHaveAGift.addStringParameter(player.getName());
|
||||
npc.broadcastPacket(iHaveAGift);
|
||||
}
|
||||
else if (event.equalsIgnoreCase("SantaRewarding3"))
|
||||
{
|
||||
npc.broadcastPacket(new SocialAction(npc.getObjectId(), 2));
|
||||
if (_isJackPot)
|
||||
{
|
||||
// Take a look at the inventory. Perhaps there might be a big present~
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NPC_STRINGS[25]));
|
||||
player.addItem("SavingSantaPresent", BR_XMAS_PRESENT_JACKPOT, 1, player, true);
|
||||
_isJackPot = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Take a look at the inventory. I hope you like the gift I gave you.
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NPC_STRINGS[24]));
|
||||
player.addItem("SavingSantaPresent", BR_XMAS_PRESENT_NORMAL, 1, player, true);
|
||||
}
|
||||
}
|
||||
else if (event.equalsIgnoreCase("SantaBlessings") && SANTAS_HELPER_AUTOBUFF)
|
||||
{
|
||||
startQuestTimer("SantaBlessings", 15000, null, null);
|
||||
final long currentTime = System.currentTimeMillis();
|
||||
for (Npc santaHelper1 : _santaHelpers)
|
||||
{
|
||||
for (PlayerInstance plb : World.getInstance().getVisibleObjects(santaHelper1, PlayerInstance.class))
|
||||
{
|
||||
if ((plb.getLevel() >= 20) && !plb.isFlyingMounted())
|
||||
{
|
||||
if (_blessedPlayers.containsKey(plb.getAccountName()))
|
||||
{
|
||||
long elapsedTimeSinceLastBlessed = currentTime - _blessedPlayers.get(plb.getAccountName());
|
||||
if (elapsedTimeSinceLastBlessed < MIN_TIME_BETWEEN_2_BLESSINGS)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final long time = player.getVariables().getLong("LAST_SANTA_BLESSING", 0);
|
||||
if ((currentTime - time) < MIN_TIME_BETWEEN_2_BLESSINGS)
|
||||
{
|
||||
_blessedPlayers.put(plb.getAccountName(), time);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
for (Npc santaHelper : _santaHelpers)
|
||||
{
|
||||
for (PlayerInstance playerx : World.getInstance().getVisibleObjects(santaHelper, PlayerInstance.class))
|
||||
{
|
||||
if (playerx.getClassId().isMage())
|
||||
{
|
||||
for (int buffId : SANTA_MAGE_BUFFS)
|
||||
{
|
||||
if (!playerx.getEffectList().isAffectedBySkill(buffId))
|
||||
{
|
||||
playerx.broadcastPacket(new MagicSkillUse(santaHelper, playerx, buffId, 1, 2000, 1));
|
||||
SkillData.getInstance().getSkill(buffId, 1).applyEffects(playerx, playerx);
|
||||
_blessedPlayers.put(playerx.getAccountName(), currentTime);
|
||||
playerx.getVariables().set("LAST_SANTA_BLESSING", currentTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int buffId : SANTA_FIGHTER_BUFFS)
|
||||
{
|
||||
if (!playerx.getEffectList().isAffectedBySkill(buffId))
|
||||
{
|
||||
playerx.broadcastPacket(new MagicSkillUse(santaHelper, playerx, buffId, 1, 2000, 1));
|
||||
SkillData.getInstance().getSkill(buffId, 1).applyEffects(playerx, playerx);
|
||||
_blessedPlayers.put(playerx.getAccountName(), currentTime);
|
||||
playerx.getVariables().set("LAST_SANTA_BLESSING", currentTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (event.equalsIgnoreCase("SpecialTreeHeal"))
|
||||
{
|
||||
startQuestTimer("SpecialTreeHeal", 9000, null, null);
|
||||
for (Npc tree : _specialTrees)
|
||||
{
|
||||
for (PlayerInstance playerr : World.getInstance().getVisibleObjects(tree, PlayerInstance.class))
|
||||
{
|
||||
int xxMin = tree.getX() - 60;
|
||||
int yyMin = tree.getY() - 60;
|
||||
int xxMax = tree.getX() + 60;
|
||||
int yyMax = tree.getY() + 60;
|
||||
int playerX = playerr.getX();
|
||||
int playerY = playerr.getY();
|
||||
|
||||
if ((playerX > xxMin) && (playerX < xxMax) && (playerY > yyMin) && (playerY < yyMax))
|
||||
{
|
||||
SkillData.getInstance().getSkill(2139, 1).applyEffects(tree, playerr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (player != null)
|
||||
{
|
||||
// FIXME: Unhardcore html!
|
||||
if (event.equalsIgnoreCase("Tree"))
|
||||
{
|
||||
int itemsOk = 0;
|
||||
htmltext = "<html><title>Christmas Event</title><body><br><br><table width=260><tr><td></td><td width=40></td><td width=40></td></tr><tr><td><font color=LEVEL>Christmas Tree</font></td><td width=40><img src=\"Icon.etc_x_mas_tree_i00\" width=32 height=32></td><td width=40></td></tr></table><br><br><table width=260>";
|
||||
|
||||
for (ItemHolder item : TREE_REQUIRED_ITEMS)
|
||||
{
|
||||
long pieceCount = player.getInventory().getInventoryItemCount(item.getId(), -1);
|
||||
if (pieceCount >= item.getCount())
|
||||
{
|
||||
itemsOk = itemsOk + 1;
|
||||
htmltext = htmltext + "<tr><td>" + ItemTable.getInstance().getTemplate(item.getId()).getName() + "</td><td width=40>" + pieceCount + "</td><td width=40><font color=0FF000>OK</font></td></tr>";
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
htmltext = htmltext + "<tr><td>" + ItemTable.getInstance().getTemplate(item.getId()).getName() + "</td><td width=40>" + pieceCount + "</td><td width=40><font color=8ae2ffb>NO</font></td></tr>";
|
||||
}
|
||||
}
|
||||
|
||||
if (itemsOk == 4)
|
||||
{
|
||||
htmltext = htmltext + "<tr><td><br></td><td width=40></td><td width=40></td></tr></table><table width=260>";
|
||||
htmltext = htmltext + "<tr><td><center><button value=\"Get the tree\" action=\"bypass -h Quest SavingSanta buyTree\" width=110 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></center></td></tr></table></body></html>";
|
||||
}
|
||||
else if (itemsOk < 4)
|
||||
{
|
||||
htmltext = htmltext + "</table><br><br>You do not have enough items.</center></body></html>";
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
else if (event.equalsIgnoreCase("buyTree"))
|
||||
{
|
||||
playSound(player, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
for (ItemHolder item : TREE_REQUIRED_ITEMS)
|
||||
{
|
||||
if (player.getInventory().getInventoryItemCount(item.getId(), -1) < item.getCount())
|
||||
{
|
||||
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
for (ItemHolder item : TREE_REQUIRED_ITEMS)
|
||||
{
|
||||
player.destroyItemByItemId(event, item.getId(), item.getCount(), player, true);
|
||||
}
|
||||
player.addItem(event, X_MAS_TREE1, 1, player, true);
|
||||
}
|
||||
else if (event.equalsIgnoreCase("SpecialTree"))
|
||||
{
|
||||
htmltext = "<html><title>Christmas Event</title><body><br><br><table width=260><tr><td></td><td width=40></td><td width=40></td></tr><tr><td><font color=LEVEL>Special Christmas Tree</font></td><td width=40><img src=\"Icon.etc_x_mas_tree_i00\" width=32 height=32></td><td width=40></td></tr></table><br><br><table width=260>";
|
||||
long pieceCount = player.getInventory().getInventoryItemCount(X_MAS_TREE1, -1);
|
||||
int itemsOk = 0;
|
||||
|
||||
if (pieceCount >= 10)
|
||||
{
|
||||
itemsOk = 1;
|
||||
htmltext = htmltext + "<tr><td>Christmas Tree</td><td width=40>" + pieceCount + "</td><td width=40><font color=0FF000>OK</font></td></tr>";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = htmltext + "<tr><td>Christmas Tree</td><td width=40>" + pieceCount + "</td><td width=40><font color=8ae2ffb>NO</font></td></tr>";
|
||||
}
|
||||
|
||||
if (itemsOk == 1)
|
||||
{
|
||||
htmltext = htmltext + "<tr><td><br></td><td width=40></td><td width=40></td></tr></table><table width=260>";
|
||||
htmltext = htmltext + "<tr><td><br></td><td width=40></td><td width=40></td></tr></table><table width=260>";
|
||||
htmltext = htmltext + "<tr><td><center><button value=\"Get the tree\" action=\"bypass -h Quest SavingSanta buySpecialTree\" width=110 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></center></td></tr></table></body></html>";
|
||||
}
|
||||
else if (itemsOk == 0)
|
||||
{
|
||||
htmltext = htmltext + "</table><br><br>You do not have enough items.</center></body></html>";
|
||||
}
|
||||
|
||||
return htmltext;
|
||||
}
|
||||
else if (event.equalsIgnoreCase("buySpecialTree"))
|
||||
{
|
||||
playSound(player, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
if (player.getInventory().getInventoryItemCount(X_MAS_TREE1, -1) < 10)
|
||||
{
|
||||
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2);
|
||||
return null;
|
||||
}
|
||||
player.destroyItemByItemId(event, X_MAS_TREE1, 10, player, true);
|
||||
player.addItem(event, X_MAS_TREE2, 1, player, true);
|
||||
}
|
||||
else if (event.equalsIgnoreCase("SantaHat"))
|
||||
{
|
||||
htmltext = "<html><title>Christmas Event</title><body><br><br><table width=260><tr><td></td><td width=40></td><td width=40></td></tr><tr><td><font color=LEVEL>Santa's Hat</font></td><td width=40><img src=\"Icon.Accessory_santas_cap_i00\" width=32 height=32></td><td width=40></td></tr></table><br><br><table width=260>";
|
||||
long pieceCount = player.getInventory().getInventoryItemCount(X_MAS_TREE1, -1);
|
||||
int itemsOk = 0;
|
||||
|
||||
if (pieceCount >= 10)
|
||||
{
|
||||
itemsOk = 1;
|
||||
htmltext = htmltext + "<tr><td>Christmas Tree</td><td width=40>" + pieceCount + "</td><td width=40><font color=0FF000>OK</font></td></tr>";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = htmltext + "<tr><td>Christmas Tree</td><td width=40>" + pieceCount + "</td><td width=40><font color=8ae2ffb>NO</font></td></tr>";
|
||||
}
|
||||
|
||||
if (itemsOk == 1)
|
||||
{
|
||||
htmltext = htmltext + "<tr><td><br></td><td width=40></td><td width=40></td></tr></table><table width=260>";
|
||||
htmltext = htmltext + "<tr><td><center><button value=\"Get the hat\" action=\"bypass -h Quest SavingSanta buyHat\" width=110 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></center></td></tr></table></body></html>";
|
||||
}
|
||||
else if (itemsOk == 0)
|
||||
{
|
||||
htmltext = htmltext + "</table><br><br>You do not have enough items.</center></body></html>";
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
else if (event.equalsIgnoreCase("buyHat"))
|
||||
{
|
||||
playSound(player, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
if (player.getInventory().getInventoryItemCount(X_MAS_TREE1, -1) < 10)
|
||||
{
|
||||
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2);
|
||||
return null;
|
||||
}
|
||||
player.destroyItemByItemId(event, X_MAS_TREE1, 10, player, true);
|
||||
player.addItem(event, SANTAS_HAT_ID, 1, player, true);
|
||||
}
|
||||
else if (event.equalsIgnoreCase("SavingSantaHat"))
|
||||
{
|
||||
htmltext = "<html><title>Christmas Event</title><body><br><br><table width=260><tr><td></td><td width=40></td><td width=40></td></tr><tr><td><font color=LEVEL>Saving Santa's Hat</font></td><td width=40><img src=\"Icon.Accessory_santas_cap_i00\" width=32 height=32></td><td width=40></td></tr></table><br><br><table width=260>";
|
||||
long pieceCount = player.getInventory().getAdena();
|
||||
int itemsOk = 0;
|
||||
|
||||
if (pieceCount >= 50000)
|
||||
{
|
||||
itemsOk = 1;
|
||||
htmltext = htmltext + "<tr><td>Adena</td><td width=40>" + pieceCount + "</td><td width=40><font color=0FF000>OK</font></td></tr>";
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
htmltext = htmltext + "<tr><td>Adena</td><td width=40>" + pieceCount + "</td><td width=40><font color=8ae2ffb>NO</font></td></tr>";
|
||||
}
|
||||
|
||||
if (itemsOk == 1)
|
||||
{
|
||||
htmltext = htmltext + "<tr><td><br></td><td width=40></td><td width=40></td></tr></table><table width=260>";
|
||||
htmltext = htmltext + "<tr><td><center><button value=\"Get the hat\" action=\"bypass -h Quest SavingSanta buySavingHat\" width=110 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></center></td></tr></table></body></html>";
|
||||
}
|
||||
|
||||
else if (itemsOk == 0)
|
||||
{
|
||||
htmltext = htmltext + "</table><br><br>You do not have enough Adena.</center></body></html>";
|
||||
}
|
||||
|
||||
return htmltext;
|
||||
}
|
||||
else if (event.equalsIgnoreCase("buySavingHat"))
|
||||
{
|
||||
playSound(player, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
if (player.getInventory().getAdena() < 50000)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
player.reduceAdena(event, 50000, player, true);
|
||||
player.addItem(event, BR_XMAS_GAWIBAWIBO_CAP, 1, player, true);
|
||||
}
|
||||
else if (event.equalsIgnoreCase("HolidayFestival"))
|
||||
{
|
||||
if (_isSantaFree)
|
||||
{
|
||||
npc.broadcastPacket(new MagicSkillUse(npc, player, BR_XMAS_REWARD_BUFF, 1, 2000, 1));
|
||||
SkillData.getInstance().getSkill(BR_XMAS_REWARD_BUFF, 1).applyEffects(player, player);
|
||||
}
|
||||
else
|
||||
{
|
||||
return "savingsanta-nobuff.htm";
|
||||
}
|
||||
}
|
||||
else if (event.equalsIgnoreCase("getWeapon"))
|
||||
{
|
||||
if ((player.getInventory().getInventoryItemCount(BR_XMAS_WPN_TICKET_NORMAL, -1) > 0) && (player.getInventory().getInventoryItemCount(BR_XMAS_WPN_TICKET_JACKPOT, -1) > 0))
|
||||
{
|
||||
return "savingsanta-noweapon.htm";
|
||||
}
|
||||
return "savingsanta-weapon.htm";
|
||||
}
|
||||
else if (event.startsWith("weapon_"))
|
||||
{
|
||||
final int itemId = Integer.parseInt(event.split("weapon_")[1]) - 1;
|
||||
if (player.getInventory().getInventoryItemCount(BR_XMAS_WPN_TICKET_JACKPOT, -1) > 0)
|
||||
{
|
||||
player.destroyItemByItemId(event, BR_XMAS_WPN_TICKET_JACKPOT, 1, player, true);
|
||||
player.addItem(event, WEAPON_REWARDS[itemId], 1, player, true).setEnchantLevel(10);
|
||||
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2);
|
||||
}
|
||||
else if ((player.getInventory().getInventoryItemCount(BR_XMAS_WPN_TICKET_NORMAL, -1) > 0) /* || (player.getLevel() < 20) */)
|
||||
{
|
||||
player.destroyItemByItemId(event, BR_XMAS_WPN_TICKET_NORMAL, 1, player, true);
|
||||
player.addItem(event, WEAPON_REWARDS[itemId], 1, player, true).setEnchantLevel(getRandom(4, 16));
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case THOMAS_D_TURKEY_ID:
|
||||
case HOLIDAY_SANTA_ID:
|
||||
case HOLIDAY_SLED_ID:
|
||||
{
|
||||
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||
return null;
|
||||
}
|
||||
case SANTA_TRAINEE_ID:
|
||||
{
|
||||
return SAVING_SANTA ? "savingsanta.htm" : "santa.htm";
|
||||
}
|
||||
default:
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean unload()
|
||||
{
|
||||
for (Npc santaHelper : _santaHelpers)
|
||||
{
|
||||
santaHelper.deleteMe();
|
||||
}
|
||||
for (Npc specialTree : _specialTrees)
|
||||
{
|
||||
specialTree.deleteMe();
|
||||
}
|
||||
return super.unload();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon)
|
||||
{
|
||||
// FIXME: Increase Thomas D. Turkey aggro rage.
|
||||
if (npc.getId() == THOMAS_D_TURKEY_ID)
|
||||
{
|
||||
// I guess you came to rescue Santa. But you picked the wrong person.
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NPC_STRINGS[8]));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new SavingSanta();
|
||||
}
|
||||
}
|
77
L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/events/SavingSanta/config.xml
vendored
Normal file
77
L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/events/SavingSanta/config.xml
vendored
Normal file
@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<event name="Saving Santa" active="21 12 2019-11 01 2020" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/eventConfig.xsd">
|
||||
<droplist>
|
||||
<add item="5556" min="1" max="1" chance="4%" /> <!-- Star Ornament -->
|
||||
<add item="5557" min="1" max="1" chance="4%" /> <!-- Bead Ornament -->
|
||||
<add item="5558" min="1" max="1" chance="8%" /> <!-- Fir Tree Branch -->
|
||||
<add item="5559" min="1" max="1" chance="1%" /> <!-- Flower Pot -->
|
||||
<add item="5562" min="1" max="1" chance="2%" /> <!-- Echo Crystal - 1st Carol -->
|
||||
<add item="5563" min="1" max="1" chance="2%" /> <!-- Echo Crystal - 2nd Carol -->
|
||||
<add item="5564" min="1" max="1" chance="2%" /> <!-- Echo Crystal - 3rd Carol -->
|
||||
<add item="5565" min="1" max="1" chance="2%" /> <!-- Echo Crystal - 4th Carol -->
|
||||
<add item="5566" min="1" max="1" chance="2%" /> <!-- Echo Crystal - 5th Carol -->
|
||||
</droplist>
|
||||
<spawnlist>
|
||||
<add npc="31863" x="147698" y="-56025" z="-2775" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="147453" y="26968" z="-2204" heading="49545" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="82218" y="148605" z="-3470" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="82754" y="53573" z="-1496" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="15064" y="143254" z="-2668" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="111067" y="218933" z="-3543" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="-12965" y="122914" z="-3117" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="87362" y="-143166" z="-1293" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="-81037" y="150092" z="-3044" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="117412" y="76642" z="-2695" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="43983" y="-47758" z="-797" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="-45907" y="49387" z="-3060" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="12153" y="16753" z="-4584" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="-84458" y="244761" z="-3730" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="114750" y="-178692" z="-820" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="-45656" y="-113119" z="-240" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="31863" x="-117195" y="46837" z="36" heading="0" /> <!-- Santa Trainee -->
|
||||
<add npc="13006" x="83254" y="148340" z="-3405" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="83278" y="147900" z="-3405" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="83241" y="148898" z="-3405" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="83281" y="149343" z="-3405" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="84304" y="149133" z="-3402" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="84311" y="148101" z="-3402" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="82948" y="147658" z="-3469" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="80905" y="147659" z="-3469" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="80908" y="149556" z="-3469" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="82957" y="149554" z="-3469" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="147849" y="-55119" z="-2734" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="147580" y="-55117" z="-2734" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="147581" y="-57244" z="-2781" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="147847" y="-57261" z="-2781" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="149085" y="-55826" z="-2781" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="146340" y="-55829" z="-2781" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="147826" y="-54095" z="-2735" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="147584" y="-54070" z="-2735" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="146235" y="25921" z="-2013" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="147840" y="25568" z="-2013" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="147055" y="25568" z="-2013" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="148694" y="25929" z="-2013" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="147733" y="27366" z="-2205" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="147197" y="27364" z="-2205" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="147266" y="29065" z="-2269" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="147646" y="29065" z="-2269" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="147456" y="27664" z="-2204" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="148078" y="-55960" z="-2781" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="147348" y="-55939" z="-2781" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="117056" y="75627" z="-2726" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="116473" y="75352" z="-2712" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="115785" y="76111" z="-2715" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="115939" y="76544" z="-2719" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="116833" y="77400" z="-2697" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="116666" y="76210" z="-2730" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="-13130" y="122533" z="-3117" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="-13165" y="122425" z="-2989" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="-13126" y="122806" z="-3117" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="15733" y="142767" z="-2706" heading="0" /> <!-- Christmas Tree -->
|
||||
<add npc="13006" x="16208" y="142710" z="-270" heading="0" /> <!-- Christmas Tree -->
|
||||
</spawnlist>
|
||||
<messages>
|
||||
<add type="onEnd" text="Saving Santa: Event end!" />
|
||||
<add type="onEnter" text="Saving Santa: Event ongoing!" />
|
||||
</messages>
|
||||
</event>
|
21
L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/events/SavingSanta/santa.htm
vendored
Normal file
21
L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/events/SavingSanta/santa.htm
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
<html><title>Santa's Helper</title><body>
|
||||
<center>
|
||||
<table width=260>
|
||||
<tr><td><center><img src="Icon.etc_X_mas_tree_i00" width=32 height=32></center></td><td><center>Christmas Event</center></td><td><center><img src="Icon.Accessory_santas_cap_i00" width=32 height=32></center></td></tr>
|
||||
</table>
|
||||
<br><br>
|
||||
So, what do you want to trade?<br1>
|
||||
<table width=260>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Christmas Tree" action="bypass -h Quest SavingSanta Tree" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>4 Bead Ornaments</td></tr>
|
||||
<tr><td></td><td>4 Star Ornaments</td></tr>
|
||||
<tr><td></td><td>10 Fir Tree Branches</td></tr>
|
||||
<tr><td></td><td>1 Flower pot</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Special Christmas Tree" action="bypass -h Quest SavingSanta SpecialTree" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>10 Christmas Trees</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Santa's Hat" action="bypass -h Quest SavingSanta SantaHat" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>10 Christmas Trees</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
The items can be obtained by hunting monsters throughout Aden and Elmore. Good luck and come back to see me when you have the required items!
|
||||
</body></html>
|
12
L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/events/SavingSanta/savingsanta-nobuff.htm
vendored
Normal file
12
L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/events/SavingSanta/savingsanta-nobuff.htm
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
<html><title>Santa's Helper</title><body>
|
||||
<center>
|
||||
<table width=260>
|
||||
<tr><td><center><img src="Icon.etc_X_mas_tree_i00" width=32 height=32></center></td><td><center>Christmas Event</center></td><td><center><img src="Icon.Accessory_santas_cap_i00" width=32 height=32></center></td></tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<table width=260>
|
||||
<tr><td><center>So, you want the Holiday Festival buff?</center></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
I can give Holiday Festival buff only when Santa is freed! Go defeat the evil Thomas D. Turkey to save Santa!
|
||||
</body></html>
|
12
L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/events/SavingSanta/savingsanta-noweapon.htm
vendored
Normal file
12
L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/events/SavingSanta/savingsanta-noweapon.htm
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
<html><title>Santa's Helper</title><body>
|
||||
<center>
|
||||
<table width=260>
|
||||
<tr><td><center><img src="Icon.etc_X_mas_tree_i00" width=32 height=32></center></td><td><center>Christmas Event</center></td><td><center><img src="Icon.Accessory_santas_cap_i00" width=32 height=32></center></td></tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<table width=260>
|
||||
<tr><td><center>So, you want an Event Weapon?</center></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
First get a Santa Claus Weapon Exchange Ticket!
|
||||
</body></html>
|
43
L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/events/SavingSanta/savingsanta-weapon.htm
vendored
Normal file
43
L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/events/SavingSanta/savingsanta-weapon.htm
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
<html><title>Santa's Helper</title><body>
|
||||
<center>
|
||||
<table width=260>
|
||||
<tr><td><center><img src="Icon.etc_X_mas_tree_i00" width=32 height=32></center></td><td><center>Christmas Event</center></td><td><center><img src="Icon.Accessory_santas_cap_i00" width=32 height=32></center></td></tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<table width=260>
|
||||
<tr><td><center>So, you want an Event Weapon?</center></td></tr>
|
||||
</table>
|
||||
<br>
|
||||
<table width=260>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td>Choose a weapon type:</td><td></td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="1h Sword" action="bypass -h Quest SavingSanta weapon_1" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>for fighters</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="2h Sword" action="bypass -h Quest SavingSanta weapon_2" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>for fighters</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="1h Blunt" action="bypass -h Quest SavingSanta weapon_4" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>for fighters</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="2h Blunt" action="bypass -h Quest SavingSanta weapon_5" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>for fighters</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="1h Blunt" action="bypass -h Quest SavingSanta weapon_6" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>for mages</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="2h Blunt" action="bypass -h Quest SavingSanta weapon_7" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>for mages</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Dagger" action="bypass -h Quest SavingSanta weapon_3" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>for fighters</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Bow" action="bypass -h Quest SavingSanta weapon_9" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>for fighters</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Fist" action="bypass -h Quest SavingSanta weapon_8" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>for fighters</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Dual" action="bypass -h Quest SavingSanta weapon_11" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>for fighters</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Pole" action="bypass -h Quest SavingSanta weapon_10" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>for fighters</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Ancient Sword" action="bypass -h Quest SavingSanta weapon_13" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>for Kamaels</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Rapier" action="bypass -h Quest SavingSanta weapon_12" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>for Kamaels</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="CrossBow" action="bypass -h Quest SavingSanta weapon_14" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>for Kamaels</td></tr>
|
||||
</table>
|
||||
</body></html>
|
25
L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/events/SavingSanta/savingsanta.htm
vendored
Normal file
25
L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/events/SavingSanta/savingsanta.htm
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
<html><title>Santa's Helper</title><body>
|
||||
<center>
|
||||
<table width=260>
|
||||
<tr><td><center><img src="Icon.etc_X_mas_tree_i00" width=32 height=32></center></td><td><center>Christmas Event</center></td><td><center><img src="Icon.Accessory_santas_cap_i00" width=32 height=32></center></td></tr>
|
||||
</table>
|
||||
<br><br>
|
||||
So, what do you want to trade?<br1>
|
||||
<table width=260>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Christmas Tree" action="bypass -h Quest SavingSanta Tree" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>4 Bead Ornaments</td></tr>
|
||||
<tr><td></td><td>4 Star Ornaments</td></tr>
|
||||
<tr><td></td><td>10 Fir Tree Branches</td></tr>
|
||||
<tr><td></td><td>1 Flower pot</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Santa's Hat" action="bypass -h Quest SavingSanta SantaHat" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>10 Christmas Trees</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Saving Santa's Hat" action="bypass -h Quest SavingSanta SavingSantaHat" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>50000 Adena</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Holiday Festival" action="bypass -h Quest SavingSanta HolidayFestival" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>Free Santa</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
<tr><td><button value="Get weapon" action="bypass -h Quest SavingSanta getWeapon" width=136 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></td><td>Weapon Exchange Ticket</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
The items can be obtained by hunting monsters throughout Aden and Elmore. Good luck and come back to see me when you have the required items!
|
||||
</body></html>
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/npcs.xsd">
|
||||
<npc id="1" level="80" type="Npc" name="Spirit of Fire">
|
||||
<npc id="1" level="80" type="Npc" name="Thomas D. Turkey" title="Misguided Holiday Scrooge">
|
||||
<race>ANIMAL</race>
|
||||
<sex>MALE</sex>
|
||||
<stats str="40" int="21" dex="30" wit="20" con="43" men="20">
|
||||
@ -35,7 +35,7 @@
|
||||
<height normal="35" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="2" level="80" type="Npc" name="Spirit of Fire">
|
||||
<npc id="2" level="80" type="Npc" name="">
|
||||
<race>CONSTRUCT</race>
|
||||
<sex>MALE</sex>
|
||||
<stats str="40" int="21" dex="30" wit="20" con="43" men="20">
|
||||
@ -69,7 +69,7 @@
|
||||
<height normal="0.1" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="3" level="70" type="Npc" name="Birthday Cake">
|
||||
<npc id="3" level="70" type="Npc" name="Santa's Helper">
|
||||
<race>DWARF</race>
|
||||
<sex>MALE</sex>
|
||||
<acquire exp="490" sp="10" />
|
||||
@ -105,7 +105,7 @@
|
||||
<height normal="16.5" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="4" level="70" type="Npc" name="Birthday Cake">
|
||||
<npc id="4" level="70" type="Npc" name="Holiday Santa" title="Happy Holidays!">
|
||||
<race>DWARF</race>
|
||||
<sex>MALE</sex>
|
||||
<acquire exp="490" sp="10" />
|
||||
@ -142,7 +142,7 @@
|
||||
<height normal="24" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="5" level="70" type="Npc" name="Birthday Cake">
|
||||
<npc id="5" level="70" type="Npc" name="Holiday Santa" title="Happy Holidays!">
|
||||
<race>DWARF</race>
|
||||
<sex>MALE</sex>
|
||||
<acquire exp="490" sp="10" />
|
||||
@ -179,7 +179,7 @@
|
||||
<height normal="24" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="6" level="70" type="Npc" name="Birthday Cake">
|
||||
<npc id="6" level="70" type="Npc" name="Holiday Sled" title="Happy Holidays!">
|
||||
<race>ETC</race>
|
||||
<sex>MALE</sex>
|
||||
<acquire exp="490" sp="10" />
|
||||
|
Loading…
Reference in New Issue
Block a user