diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/instances/MemoryOfDisaster.xml b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/instances/MemoryOfDisaster.xml
deleted file mode 100644
index 209212c9f5..0000000000
--- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/instances/MemoryOfDisaster.xml
+++ /dev/null
@@ -1,321 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/instances/MemoryOfDisaster/MemoryOfDisaster.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/instances/MemoryOfDisaster/MemoryOfDisaster.java
deleted file mode 100644
index 51719d3a43..0000000000
--- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/instances/MemoryOfDisaster/MemoryOfDisaster.java
+++ /dev/null
@@ -1,1061 +0,0 @@
-/*
- * 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 .
- */
-package instances.MemoryOfDisaster;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-import org.l2jmobius.Config;
-import org.l2jmobius.commons.util.CommonUtil;
-import org.l2jmobius.commons.util.Rnd;
-import org.l2jmobius.gameserver.ai.CtrlIntention;
-import org.l2jmobius.gameserver.enums.CategoryType;
-import org.l2jmobius.gameserver.enums.ChatType;
-import org.l2jmobius.gameserver.enums.Movie;
-import org.l2jmobius.gameserver.enums.Race;
-import org.l2jmobius.gameserver.model.Location;
-import org.l2jmobius.gameserver.model.StatsSet;
-import org.l2jmobius.gameserver.model.WorldObject;
-import org.l2jmobius.gameserver.model.actor.Creature;
-import org.l2jmobius.gameserver.model.actor.Npc;
-import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
-import org.l2jmobius.gameserver.model.base.ClassId;
-import org.l2jmobius.gameserver.model.events.EventType;
-import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
-import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
-import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
-import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttacked;
-import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath;
-import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
-import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass;
-import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged;
-import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
-import org.l2jmobius.gameserver.model.holders.SkillHolder;
-import org.l2jmobius.gameserver.model.instancezone.Instance;
-import org.l2jmobius.gameserver.model.skills.Skill;
-import org.l2jmobius.gameserver.network.NpcStringId;
-import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
-import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
-import org.l2jmobius.gameserver.network.serverpackets.OnEventTrigger;
-import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
-import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
-import org.l2jmobius.gameserver.network.serverpackets.awakening.ExCallToChangeClass;
-import org.l2jmobius.gameserver.taskmanager.DecayTaskManager;
-
-import instances.AbstractInstance;
-
-/**
- * Memory Of Disaster instance zone.
- * @author Sdw
- */
-public class MemoryOfDisaster extends AbstractInstance
-{
- // NPCs
- private static final int INVISIBLE_NPC = 18919;
- private static final int BRONK = 19192;
- private static final int ROGIN = 19193;
- private static final int TOROCCO = 19198;
- private static final int TENTACLE = 19171;
- private static final int TEREDOR = 19172;
- private static final int SOLDIER = 19196;
- private static final int SOLDIER2 = 19197;
- private static final int SIEGE_GOLEM = 19189;
- private static final int TEREDOR_TRANSPARENT = 18998;
- private static final int SILVERA = 19194;
- private static final int WIRPHY = 19195;
- private static final int EARTH_WYRM_TRASKEN = 19217;
- private static final int SWOOP_CANNON = 19190;
- private static final int[] DWARVES =
- {
- 19191,
- 19192,
- 19193,
- 19198,
- 19199,
- 19200,
- 19201,
- 19202,
- 19203,
- 19204,
- 19205,
- 19206,
- 19207,
- 19208,
- 19209,
- 19210,
- 19211,
- 19212,
- 19213,
- 19214,
- 19215
- };
- private static final int CONTROL_DARKELF_AWAKE = 33550;
- private static final int[] SACRIFICED_DARK_ELF =
- {
- 33536,
- 33538,
- 33540,
- 33542,
- 33544,
- 33546
- };
- // Skills
- private static final SkillHolder SWOOP_CANNON_SKILL = new SkillHolder(16023, 1);
- private static final SkillHolder SIEGE_GOLEM_SKILL_1 = new SkillHolder(16022, 1);
- private static final SkillHolder SIEGE_GOLEM_SKILL_2 = new SkillHolder(16024, 1);
- private static final SkillHolder PULLER_SKILL = new SkillHolder(16031, 1);
- private static final SkillHolder BOUNCER_SKILL = new SkillHolder(14649, 1);
- private static final SkillHolder TEREDOR_TRANSPARENT_SKILL = new SkillHolder(16021, 1);
- private static final SkillHolder TRASKEN_SKILL_1 = new SkillHolder(14505, 1);
- private static final SkillHolder TRASKEN_SKILL_2 = new SkillHolder(14337, 1);
- private static final SkillHolder TRASKEN_SKILL_3 = new SkillHolder(14338, 1);
- private static final SkillHolder TRASKEN_SKILL_4 = new SkillHolder(14340, 1);
- // Items
- private static final int TRANSPARENT_1HS = 15280;
- // Locations
- private static final Location BATTLE_PORT = new Location(116063, -183167, -1480, 64960);
- private static final Location ROGIN_MOVE = new Location(116400, -183069, -1600);
- private static final Location AWAKENING_GUIDE_MOVE_1 = new Location(115830, -182103, -1400);
- private static final Location AWAKENING_GUIDE_MOVE_2 = new Location(115955, -181387, -1624);
- private static final Location AWAKENING_GUIDE_MOVE_3 = new Location(116830, -180257, -1176);
- private static final Location AWAKENING_GUIDE_MOVE_4 = new Location(115110, -178852, -896);
- private static final Location AWAKENING_GUIDE_MOVE_5 = new Location(115095, -176978, -808);
- private static final Location DWARVES_MOVE_1 = new Location(115830, -182103, -1400);
- private static final Location DWARVES_MOVE_2 = new Location(115955, -181387, -1624);
- private static final Location DWARVES_MOVE_3 = new Location(116830, -180257, -1176);
- private static final Location GOLEM_MOVE = new Location(116608, -179205, -1176);
- private static final Location PULLER_TELEPORT = new Location(115899, -181931, -1424, 0);
- private static final Location WIRPHY_MOVE = new Location(116639, -179990, -1160);
- private static final Location SILVERA_MOVE = new Location(116880, -179821, -1144);
- private static final Location[] DWARVES_MOVE_RANDOM =
- {
- new Location(117147, -179248, -1120),
- new Location(115110, -178852, -896),
- new Location(115959, -178311, -1064)
- };
- private static final Location[] TEREDOR_SPAWN_LOC =
- {
- new Location(117100, -181088, -1272, 19956),
- new Location(116925, -180420, -1200, 46585),
- new Location(116656, -180461, -1240, 56363),
- };
- private static final Location DE_VILLAGE_START = new Location(10400, 17092, -4584, Rnd.get(65520));
- // Misc
- private static final int FIRE_IN_DWARVEN_VILLAGE = 23120700;
- private static final int TEMPLATE_ID = 200;
- private static final NpcStringId[] SHOUT_BRONK_DEATH =
- {
- NpcStringId.BRONK,
- NpcStringId.CHIEF,
- NpcStringId.BRONK_2,
- NpcStringId.NO_WAY_3
- };
- private static final NpcStringId[] SHOUT_RUN =
- {
- NpcStringId.FOR_BRONK,
- NpcStringId.DWARVES_FOREVER,
- NpcStringId.SAVE_THE_DWARVEN_VILLAGE,
- NpcStringId.WHOAAAAAA,
- NpcStringId.COME_ONE_2
- };
- private static final NpcStringId[] SHOUT_SILVERA_DEATH =
- {
- NpcStringId.SILVERA,
- NpcStringId.WE_CAN_T_TAKE_ANY_MORE_LOSSES,
- NpcStringId.TOO_LATE_3,
- NpcStringId.INCREDIBLE,
- NpcStringId.ANOTHER_ONE_OVER_THERE
- };
- private static final NpcStringId[] SACRIFICED_DARK_ELF_SUICIDE_MESSAGES =
- {
- NpcStringId.GAH_SHILEN_WHY_MUST_YOU_MAKE_US_SUFFER,
- NpcStringId.SHILEN_ABANDONED_US_IT_IS_OUR_TIME_TO_DIE,
- NpcStringId.WITH_OUR_SACRIFICE_WILL_WE_FULFILL_THE_PROPHECY,
- NpcStringId.BLOODY_RAIN_PLAGUE_DEATH_SHE_IS_NEAR,
- NpcStringId.ARHHHH,
- NpcStringId.WE_OFFER_OUR_BLOOD_AS_A_SACRIFICE_SHILEN_SEE_US,
- NpcStringId.WILL_DARK_ELVES_BE_FORGOTTEN_AFTER_WHAT_WE_HAVE_DONE,
- NpcStringId.UNBELIEVERS_RUN_DEATH_WILL_FOLLOW_YOU,
- NpcStringId.I_CURSE_OUR_BLOOD_I_DESPISE_WHAT_WE_ARE_SHILEN
- };
-
- public MemoryOfDisaster()
- {
- super(TEMPLATE_ID);
- addInstanceCreatedId(TEMPLATE_ID);
- addSpawnId(INVISIBLE_NPC, TENTACLE, SOLDIER, SOLDIER2, TEREDOR, SIEGE_GOLEM, WIRPHY, SILVERA, TEREDOR_TRANSPARENT, EARTH_WYRM_TRASKEN, SWOOP_CANNON, CONTROL_DARKELF_AWAKE);
- addMoveFinishedId(ROGIN, SOLDIER, WIRPHY, SILVERA);
- addMoveFinishedId(DWARVES);
- addSpellFinishedId(SIEGE_GOLEM, INVISIBLE_NPC, TEREDOR_TRANSPARENT, EARTH_WYRM_TRASKEN, SWOOP_CANNON);
- setCreatureKillId(this::onCreatureKill, BRONK, SILVERA);
- setCreatureAttackedId(this::onCreatureAttacked, BRONK, TENTACLE, SOLDIER, SOLDIER2, TEREDOR, SIEGE_GOLEM, WIRPHY, SILVERA);
- setCreatureSeeId(this::onCreatureSee, TENTACLE, SOLDIER, SOLDIER2, TEREDOR, INVISIBLE_NPC, CONTROL_DARKELF_AWAKE);
- addEventReceivedId(SACRIFICED_DARK_ELF);
- }
-
- @Override
- public String onSpawn(Npc npc)
- {
- final Instance instance = npc.getInstanceWorld();
- if (isInInstance(instance))
- {
- switch (npc.getId())
- {
- case INVISIBLE_NPC:
- {
- switch (npc.getParameters().getString("type", ""))
- {
- case "FIGHT":
- {
- addSpawn(npc, npc.getParameters().getInt("npcId"), npc.getLocation(), true, instance.getId());
- switch (Rnd.get(3))
- {
- case 0:
- {
- addSpawn(npc, SOLDIER, npc.getLocation(), true, instance.getId());
- break;
- }
- case 1:
- {
- addSpawn(npc, SOLDIER, npc.getLocation(), true, instance.getId());
- addSpawn(npc, SOLDIER2, npc.getLocation(), true, instance.getId());
- break;
- }
- case 2:
- {
- addSpawn(npc, SOLDIER, npc.getLocation(), true, instance.getId());
- addSpawn(npc, SOLDIER2, npc.getLocation(), true, instance.getId());
- addSpawn(npc, SOLDIER2, npc.getLocation(), true, instance.getId());
- break;
- }
- }
- break;
- }
- case "EVENT_B":
- {
- getTimers().addTimer("WARNING_TIME", 180000, npc, null);
- break;
- }
- case "EVENT_C":
- {
- final Npc golem = addSpawn(npc, SIEGE_GOLEM, 116881, -180742, -1248, 1843, false, 0, false, instance.getId());
- golem.setIsInvul(true);
- break;
- }
- case "REINFORCE":
- {
- getTimers().addTimer("REINFORCE_SPAWN", 30000, npc, null);
- break;
- }
- default:
- {
- if (npc.getVariables().getString("type", "").equals("PULLER"))
- {
- addSkillCastDesire(npc, instance.getFirstPlayer(), PULLER_SKILL, 100000000);
- }
- else if (npc.getVariables().getString("type", "").equals("BOUNCER"))
- {
- addSkillCastDesire(npc, instance.getFirstPlayer(), BOUNCER_SKILL, 100000000);
- }
- break;
- }
- }
- break;
- }
- case SOLDIER:
- {
- switch (npc.getVariables().getString("type", ""))
- {
- case "AWAKENING_GUIDE":
- {
- npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, AWAKENING_GUIDE_MOVE_1);
- npc.setRunning();
- break;
- }
- default:
- {
- npc.initSeenCreatures();
- break;
- }
- }
- break;
- }
- case TENTACLE:
- case SOLDIER2:
- {
- npc.initSeenCreatures();
- break;
- }
- case TEREDOR:
- {
- npc.initSeenCreatures();
- if (npc.isScriptValue(2))
- {
- addSpawn(WIRPHY, 116361, -179760, -1128, 57533, false, 0, false, instance.getId());
- addSpawn(SILVERA, 116361, -179760, -1128, 57533, false, 0, false, instance.getId());
- }
- break;
- }
- case SIEGE_GOLEM:
- {
- npc.initSeenCreatures();
- for (Location loc : TEREDOR_SPAWN_LOC)
- {
- final Npc teredor = addSpawn(TEREDOR, loc, false, 0, false, instance.getId());
- addAttackDesire(teredor, npc);
- teredor.setScriptValue(1);
- }
- break;
- }
- case WIRPHY:
- {
- npc.setRunning();
- addMoveToDesire(npc, WIRPHY_MOVE, 23);
- break;
- }
- case SILVERA:
- {
- npc.setRunning();
- addMoveToDesire(npc, SILVERA_MOVE, 23);
- break;
- }
- case TEREDOR_TRANSPARENT:
- {
- npc.setTarget(npc);
- npc.doCast(TEREDOR_TRANSPARENT_SKILL.getSkill());
- break;
- }
- case EARTH_WYRM_TRASKEN:
- {
- npc.setLHandId(TRANSPARENT_1HS);
- getTimers().addTimer("ENTER_EVENT", 5000, npc, null);
- break;
- }
- case SWOOP_CANNON:
- {
- npc.setTarget(npc);
- npc.doCast(SWOOP_CANNON_SKILL.getSkill());
- break;
- }
- case CONTROL_DARKELF_AWAKE:
- {
- npc.initSeenCreatures();
- break;
- }
- }
- }
- return super.onSpawn(npc);
- }
-
- private void onCreatureSee(OnCreatureSee event)
- {
- final Creature creature = event.getSeen();
- final Npc npc = (Npc) event.getSeer();
- final Instance world = npc.getInstanceWorld();
-
- if (isInInstance(world))
- {
- if (creature.isNpc())
- {
- switch (npc.getId())
- {
- case SOLDIER:
- case SOLDIER2:
- {
- if ((creature.getId() == TENTACLE) || ((creature.getId() == TEREDOR) && !((Npc) creature).isScriptValue(2)))
- {
- addAttackDesire(npc, creature);
- }
- break;
- }
- case TENTACLE:
- {
- if ((creature.getId() == SOLDIER) || (creature.getId() == SOLDIER2))
- {
- addAttackDesire(npc, creature);
- }
- break;
- }
- case TEREDOR:
- {
- if (!npc.isScriptValue(2))
- {
- if ((creature.getId() == SOLDIER) || (creature.getId() == SOLDIER2))
- {
- addAttackDesire(npc, creature);
- }
- }
- break;
- }
- }
- }
- else if (creature.isPlayer())
- {
- switch (npc.getId())
- {
- case INVISIBLE_NPC:
- {
- if (npc.getParameters().getString("type", "").equals("EVENT_C"))
- {
- final Npc siegeGolem = npc.getInstanceWorld().getNpc(SIEGE_GOLEM);
- if (siegeGolem.isScriptValue(0))
- {
- siegeGolem.setScriptValue(1);
- siegeGolem.abortAttack();
- siegeGolem.abortCast();
- siegeGolem.doCast(SIEGE_GOLEM_SKILL_1.getSkill());
- world.getAliveNpcs(TEREDOR).stream().filter(n -> n.isScriptValue(1)).forEach(n -> getTimers().addTimer("TEREDOR_SUICIDE", 10000, n, null));
- getTimers().addTimer("CHASING_TRAJAN_TIME", 5000, npc, null);
- getTimers().addTimer("EARTHWORM_TIME", 15000, npc, null);
- }
- }
- else if (npc.getParameters().getString("type", "").equals("EVENT_B"))
- {
- getTimers().cancelTimers("WARNING_TIME");
- }
- else if (npc.getVariables().getString("type", "").equals("PULLER"))
- {
- showOnScreenMsg(creature.getActingPlayer(), NpcStringId.WATCH_THE_DWARVEN_VILLAGE_LAST_STAND, ExShowScreenMessage.TOP_CENTER, 5000);
- }
- break;
- }
- case CONTROL_DARKELF_AWAKE:
- {
- getTimers().addTimer("OPENING_DE_SCENE", 1000, e ->
- {
- playMovie(creature.getActingPlayer(), Movie.SC_AWAKENING_OPENING_D);
- getTimers().addTimer("TIMER_ID_OP_SCEN_END", 25000, npc, creature.getActingPlayer());
- });
- break;
- }
- }
- }
- }
- }
-
- @Override
- public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
- {
- switch (event)
- {
- case "EARTHQUAKE":
- {
- player.sendPacket(new Earthquake(player.getLocation(), 50, 4));
- getTimers().addTimer("EARTHQUAKE", 10000, null, player);
- break;
- }
- case "END_OF_OPENING_SCENE":
- {
- player.teleToLocation(BATTLE_PORT, player.getInstanceWorld());
- getTimers().addTimer("SPAWN_ROGIN", 10000, null, player);
- break;
- }
- case "SPAWN_ROGIN":
- {
- showOnScreenMsg(player, NpcStringId.WATCH_THE_DWARVEN_VILLAGE_LAST_STAND, ExShowScreenMessage.TOP_CENTER, 5000);
- player.getInstanceWorld().spawnGroup("ROGIN").forEach(n ->
- {
- addMoveToDesire(n, ROGIN_MOVE, 23);
- n.setRunning();
- });
- break;
- }
- case "ROGIN_TALK":
- {
- switch (npc.getVariables().getInt("talkId", 0))
- {
- case 0:
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.CHIEF_REPORTING_IN);
- npc.getVariables().set("talkId", 1);
- getTimers().addTimer("ROGIN_TALK", 2000, npc, null);
- break;
- }
- case 1:
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ENEMIES_ARE_APPROACHING_FORM_THE_SOUTH);
- npc.getVariables().set("talkId", 2);
- getTimers().addTimer("ROGIN_TALK", 2000, npc, null);
- npc.getInstanceWorld().getNpc(TOROCCO).broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ROGIN_I_M_HERE);
- npc.getInstanceWorld().getNpc(BRONK).broadcastSay(ChatType.NPC_GENERAL, NpcStringId.MM_I_SEE);
- // Set Bronk heading towards Rogin
- break;
- }
- case 2:
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THE_ELDERS_HAVEN_T_BEEN_MOVED_TO_SAFETY);
- npc.getVariables().set("talkId", 3);
- getTimers().addTimer("ROGIN_TALK", 2000, npc, null);
- break;
- }
- case 3:
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.MANY_RESIDENTS_STILL_HAVEN_T_LEFT_THEIR_HOMES);
- getTimers().addTimer("BRONK_TALK", 2000, npc.getInstanceWorld().getNpc(BRONK), null);
- break;
- }
- }
- break;
- }
- case "BRONK_TALK":
- {
- switch (npc.getVariables().getInt("talkId", 0))
- {
- case 0:
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THANK_YOU_FOR_THE_REPORT_ROGIN);
- npc.getVariables().set("talkId", 1);
- getTimers().addTimer("BRONK_TALK", 2000, npc, null);
- npc.setHeading(17036);
- npc.broadcastPacket(new ValidateLocation(npc));
- break;
- }
- case 1:
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.SOLDIERS_WE_RE_FIGHTING_A_BATTLE_THAT_CAN_T_BE_WON);
- npc.getVariables().set("talkId", 2);
- getTimers().addTimer("BRONK_TALK", 2000, npc, null);
- npc.setHeading(17036);
- npc.broadcastPacket(new ValidateLocation(npc));
- break;
- }
- case 2:
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.BUT_WE_HAVE_TO_DEFEND_OUR_VILLAGE_SO_WE_RE_FIGHTING);
- npc.getVariables().set("talkId", 3);
- getTimers().addTimer("BRONK_TALK", 2000, npc, null);
- break;
- }
- case 3:
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.FOR_THE_FINE_WINES_AND_TREASURES_OF_ADEN);
- npc.getVariables().set("talkId", 4);
- getTimers().addTimer("BRONK_TALK", 2000, npc, null);
- break;
- }
- case 4:
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.I_M_PROUD_OF_EVERY_ONE_OF);
- npc.getVariables().set("talkId", 5);
- getTimers().addTimer("BRONK_TALK", 2000, npc, null);
- break;
- }
- case 5:
- {
- npc.getInstanceWorld().spawnGroup("TENTACLE").forEach(n ->
- {
- n.getVariables().set("isLeaderKiller", true);
- addAttackDesire(n, npc);
- });
- break;
- }
- }
- break;
- }
- case "REINFORCE_SPAWN":
- {
- final Npc soldier = addSpawn(SOLDIER, npc.getLocation(), false, 0, false, npc.getInstanceId());
- soldier.getVariables().set("type", "AWAKENING_GUIDE");
- getTimers().addTimer("REINFORCE_SPAWN", 40000, npc, null);
- break;
- }
- case "ATTACK_TIME":
- {
- final List tentacles = npc.getInstanceWorld().getAliveNpcs(TENTACLE).stream().filter(n -> n.getVariables().getBoolean("isLeaderKiller", false)).collect(Collectors.toList());
- npc.getInstanceWorld().getNpcs(DWARVES).forEach(n -> addAttackDesire(n, tentacles.get(Rnd.get(tentacles.size()))));
- break;
- }
- case "RUN_TIME":
- {
- npc.getInstanceWorld().getNpcs(DWARVES).forEach(n ->
- {
- n.setRunning();
- n.broadcastSay(ChatType.NPC_GENERAL, SHOUT_RUN[Rnd.get(SHOUT_RUN.length)]);
- n.getAI().moveTo(DWARVES_MOVE_1);
- });
- break;
- }
- case "TEREDOR_SUICIDE":
- {
- npc.doDie(null);
- break;
- }
- case "WARNING_TIME":
- {
- final Npc invisibleNpc = addSpawn(INVISIBLE_NPC, 117100, -181088, -1272, 19956, false, 0, false, npc.getInstanceId());
- invisibleNpc.getVariables().set("type", "PULLER");
- break;
- }
- case "SECOND_PULL":
- {
- addSkillCastDesire(npc, npc.getInstanceWorld().getFirstPlayer(), PULLER_SKILL, 100000000);
- getTimers().addTimer("DESPAWN_PULLER", 3000, npc, null);
- break;
- }
- case "DESPAWN_PULLER":
- {
- npc.deleteMe();
- break;
- }
- case "CHASING_TRAJAN_TIME":
- {
- final Npc teredor = addSpawn(npc, TEREDOR, 116016, -179503, -1040, 58208, false, 0, false, npc.getInstanceId());
- teredor.setScriptValue(2);
- break;
- }
- case "EARTHWORM_TIME":
- {
- addSpawn(npc, TEREDOR_TRANSPARENT, 116511, -178729, -1176, 58208, false, 0, false, npc.getInstanceId());
- break;
- }
- case "ENTER_EVENT":
- {
- npc.setTarget(npc);
- npc.doCast(TRASKEN_SKILL_1.getSkill());
- npc.getInstanceWorld().getFirstPlayer().sendPacket(new Earthquake(npc.getLocation(), 50, 4));
- getTimers().addTimer("TRASKEN_UNEQUIP", 2000, npc, null);
- break;
- }
- case "TRASKEN_UNEQUIP":
- {
- npc.setLHandId(0);
- break;
- }
- case "PC_TEL_TIME":
- {
- player.sendPacket(new OnEventTrigger(FIRE_IN_DWARVEN_VILLAGE, false));
- getTimers().cancelTimer("EARTHQUAKE", null, player);
- player.teleToLocation(DE_VILLAGE_START, player.getInstanceWorld());
- break;
- }
- case "TIMER_ID_OP_SCEN_END":
- {
- npc.broadcastEvent("SCE_J4D_DARK_ELF_START", 8000, null);
- getTimers().addTimer("TIMER_ID_END", 60000, npc, player);
- break;
- }
- case "TIMER_ID_END":
- {
- playMovie(player, Movie.SC_AWAKENING_OPENING_F);
- getTimers().addTimer("TIMER_ID_FINAL_ED_SCEN_END", 40000, npc, player);
- break;
- }
- case "TIMER_ID_FINAL_ED_SCEN_END":
- {
- // myself->SetOneTimeQuestFlag(myself->c_ai0, 10491, 1);
- finishInstance(player, 0);
- player.sendPacket(new TutorialShowHtml(getHtm(player, "calltochange_end.htm")));
- break;
- }
- case "TIMER_ID_DIE":
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, SACRIFICED_DARK_ELF_SUICIDE_MESSAGES[Rnd.get(SACRIFICED_DARK_ELF_SUICIDE_MESSAGES.length)]);
- npc.doDie(npc);
- DecayTaskManager.getInstance().cancel(npc);
- break;
- }
- }
- }
-
- @Override
- public void onInstanceCreated(Instance instance, PlayerInstance player)
- {
- getTimers().addTimer("OPENING_SCENE", 1000, e ->
- {
- instance.getPlayers().forEach(p ->
- {
- p.sendPacket(new OnEventTrigger(FIRE_IN_DWARVEN_VILLAGE, true));
- playMovie(p, Movie.SC_AWAKENING_OPENING);
- getTimers().addTimer("EARTHQUAKE", 10000, null, p);
- getTimers().addTimer("END_OF_OPENING_SCENE", 32000, null, p);
- });
- });
- }
-
- @Override
- public void onMoveFinished(Npc npc)
- {
- if (CommonUtil.contains(DWARVES, npc.getId()))
- {
- if ((npc.getX() == DWARVES_MOVE_1.getX()) && (npc.getY() == DWARVES_MOVE_1.getY()))
- {
- addMoveToDesire(npc, DWARVES_MOVE_2, 23);
- }
- else if ((npc.getX() == DWARVES_MOVE_2.getX()) && (npc.getY() == DWARVES_MOVE_2.getY()))
- {
- addMoveToDesire(npc, DWARVES_MOVE_3, 23);
- }
- else if ((npc.getX() == DWARVES_MOVE_3.getX()) && (npc.getY() == DWARVES_MOVE_3.getY()))
- {
- addMoveToDesire(npc, DWARVES_MOVE_RANDOM[Rnd.get(DWARVES_MOVE_RANDOM.length)], 23);
- }
- }
- switch (npc.getId())
- {
- case ROGIN:
- {
- if ((npc.getX() == ROGIN_MOVE.getX()) && (npc.getY() == ROGIN_MOVE.getY()))
- {
- getTimers().addTimer("ROGIN_TALK", 3000, npc, null);
- }
- break;
- }
- case SOLDIER:
- {
- switch (npc.getVariables().getString("type", ""))
- {
- case "AWAKENING_GUIDE":
- {
- if ((npc.getX() == AWAKENING_GUIDE_MOVE_1.getX()) && (npc.getY() == AWAKENING_GUIDE_MOVE_1.getY()))
- {
- addMoveToDesire(npc, AWAKENING_GUIDE_MOVE_2, 23);
- }
- else if ((npc.getX() == AWAKENING_GUIDE_MOVE_2.getX()) && (npc.getY() == AWAKENING_GUIDE_MOVE_2.getY()))
- {
- addMoveToDesire(npc, AWAKENING_GUIDE_MOVE_3, 23);
- }
- else if ((npc.getX() == AWAKENING_GUIDE_MOVE_3.getX()) && (npc.getY() == AWAKENING_GUIDE_MOVE_3.getY()))
- {
- addMoveToDesire(npc, AWAKENING_GUIDE_MOVE_4, 23);
- }
- else if ((npc.getX() == AWAKENING_GUIDE_MOVE_4.getX()) && (npc.getY() == AWAKENING_GUIDE_MOVE_4.getY()))
- {
- addMoveToDesire(npc, AWAKENING_GUIDE_MOVE_5, 23);
- }
- else if ((npc.getX() == AWAKENING_GUIDE_MOVE_5.getX()) && (npc.getY() == AWAKENING_GUIDE_MOVE_5.getY()))
- {
- getTimers().addTimer("DESPAWN_AWAKENING_GUIDE", 1000, e -> npc.deleteMe());
- }
- break;
- }
- }
- break;
- }
- case WIRPHY:
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.HELP_ME_3);
- npc.getInstanceWorld().getAliveNpcs(TEREDOR).stream().filter(n -> n.isScriptValue(2)).forEach(n -> addAttackDesire(n, npc));
- break;
- }
- case SILVERA:
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.I_VE_GOT_A_MONSTER_ON_MY_TAIL);
- break;
- }
- }
- }
-
- private void onCreatureAttacked(OnCreatureAttacked event)
- {
- final Instance world = event.getTarget().getInstanceWorld();
- if (isInInstance(world))
- {
- if (!event.getAttacker().isPlayable())
- {
- final Npc npc = (Npc) event.getTarget();
- final Npc attacker = (Npc) event.getAttacker();
- if (CommonUtil.contains(DWARVES, npc.getId()))
- {
- final int attackCount = npc.getVariables().getInt("attackCount", 0) + 1;
- if (attackCount == 10)
- {
- npc.doDie(attacker);
- }
- else
- {
- npc.getVariables().set("attackCount", attackCount);
- }
- }
- switch (npc.getId())
- {
- case BRONK:
- {
- npc.doDie(attacker);
- break;
- }
- case SOLDIER:
- case SOLDIER2:
- {
- final int attackCount = npc.getVariables().getInt("attackCount", 0) + 1;
- if (attackCount == 10)
- {
- npc.doDie(attacker);
- addSpawn((Npc) npc.getSummoner(), SOLDIER, npc.getLocation(), true, world.getId());
- }
- else
- {
- npc.getVariables().set("attackCount", attackCount);
- }
- break;
- }
- case TENTACLE:
- {
- final int attackCount = npc.getVariables().getInt("attackCount", 0) + 1;
- final boolean isBronKiller = npc.getVariables().getBoolean("isLeaderKiller", false);
- final int killCount = isBronKiller ? 5 : 20;
- if (attackCount == killCount)
- {
- npc.doDie(attacker);
- if (!isBronKiller)
- {
- addSpawn((Npc) npc.getSummoner(), npc.getId(), npc.getLocation(), true, world.getId());
- }
- }
- else
- {
- npc.getVariables().set("attackCount", attackCount);
- addAttackDesire(npc, attacker);
- }
- break;
- }
- case TEREDOR:
- {
- if (npc.isScriptValue(0))
- {
- final int attackCount = npc.getVariables().getInt("attackCount", 0) + 1;
- if (attackCount == 20)
- {
- npc.doDie(attacker);
- addSpawn((Npc) npc.getSummoner(), npc.getId(), npc.getLocation(), true, world.getId());
- }
- else
- {
- npc.getVariables().set("attackCount", attackCount);
- addAttackDesire(npc, attacker);
- }
- }
- else if (npc.isScriptValue(2))
- {
- final int attackCount = npc.getVariables().getInt("attackCount", 0) + 1;
- if ((attackCount == 80) || (attacker.getId() == SIEGE_GOLEM))
- {
- npc.doDie(attacker);
- final Npc golem = world.getNpc(SIEGE_GOLEM);
- golem.abortAttack();
- golem.abortCast();
- world.getNpc(SIEGE_GOLEM).getAI().moveTo(GOLEM_MOVE);
- }
- addAttackDesire(npc, attacker);
- }
- break;
- }
- case SIEGE_GOLEM:
- {
- if (npc.isScriptValue(0))
- {
- addSkillCastDesire(npc, attacker, SIEGE_GOLEM_SKILL_2, 1000000);
- }
- break;
- }
- case WIRPHY:
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.NO_WAY_2);
- npc.doDie(null);
- attacker.doAutoAttack(world.getNpc(SILVERA));
- break;
- }
- case SILVERA:
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.WHOAAAAAA);
- npc.doDie(null);
- world.getNpc(SIEGE_GOLEM).doAutoAttack(attacker);
- break;
- }
- }
- }
- }
- }
-
- private void onCreatureKill(OnCreatureDeath event)
- {
- final Npc npc = ((Npc) event.getTarget());
- if (npc.getId() == BRONK)
- {
- for (Npc dwarf : npc.getInstanceWorld().getNpcs(DWARVES))
- {
- if (dwarf.getId() == ROGIN)
- {
- dwarf.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.CHIEF_2);
- }
- else
- {
- dwarf.broadcastSay(ChatType.NPC_GENERAL, SHOUT_BRONK_DEATH[Rnd.get(SHOUT_BRONK_DEATH.length)]);
- }
- }
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.UGH_IF_I_SEE_YOU_IN_THE_SPIRIT_WORLD_FIRST_ROUND_IS_ON_ME);
- getTimers().addTimer("ATTACK_TIME", 1000, npc, null);
- getTimers().addTimer("RUN_TIME", 10000, npc, null);
- }
- else if (npc.getId() == SILVERA)
- {
- npc.getInstanceWorld().getNpcs(DWARVES).forEach(n -> n.broadcastSay(ChatType.NPC_GENERAL, SHOUT_SILVERA_DEATH[Rnd.get(SHOUT_SILVERA_DEATH.length)]));
- }
- }
-
- @Override
- public String onSpellFinished(Npc npc, PlayerInstance player, Skill skill)
- {
- switch (npc.getId())
- {
- case SIEGE_GOLEM:
- {
- if (skill.getId() == SIEGE_GOLEM_SKILL_1.getSkillId())
- {
- npc.setRunning();
- npc.getAI().moveTo(GOLEM_MOVE);
- }
- break;
- }
- case INVISIBLE_NPC:
- {
- if (npc.getVariables().getString("type", "").equals("PULLER") && (skill.getId() == PULLER_SKILL.getSkillId()) && npc.isScriptValue(0))
- {
- npc.teleToLocation(PULLER_TELEPORT, npc.getInstanceWorld());
- npc.setScriptValue(1);
- getTimers().addTimer("SECOND_PULL", 2000, npc, null);
- }
- else if (npc.getVariables().getString("type", "").equals("BOUNCER") && (skill.getId() == BOUNCER_SKILL.getSkillId()))
- {
- npc.deleteMe();
- }
- break;
- }
- case TEREDOR_TRANSPARENT:
- {
- if (skill.getId() == TEREDOR_TRANSPARENT_SKILL.getSkillId())
- {
- final Npc invisibleNpc = addSpawn(npc, INVISIBLE_NPC, npc.getLocation(), false, npc.getInstanceId());
- invisibleNpc.getVariables().set("type", "BOUNCER");
- addSpawn(npc, EARTH_WYRM_TRASKEN, npc.getLocation(), false, npc.getInstanceId());
- npc.deleteMe();
- }
- break;
- }
- case EARTH_WYRM_TRASKEN:
- {
- if (skill.getId() == TRASKEN_SKILL_1.getSkillId())
- {
- playMovie(npc.getInstanceWorld().getFirstPlayer(), Movie.SC_AWAKENING_OPENING_C);
- npc.setTarget(npc.getInstanceWorld().getNpc(SIEGE_GOLEM));
- npc.doCast(TRASKEN_SKILL_2.getSkill());
- getTimers().addTimer("PC_TEL_TIME", 23000, npc, npc.getInstanceWorld().getFirstPlayer());
- }
- else if (skill.getId() == TRASKEN_SKILL_2.getSkillId())
- {
- if (npc.isScriptValue(0))
- {
- npc.getInstanceWorld().getNpc(SIEGE_GOLEM).doDie(npc);
- final Npc invisibleNpc = addSpawn(npc, INVISIBLE_NPC, npc.getLocation(), false, npc.getInstanceId());
- invisibleNpc.getVariables().set("type", "BOUNCER");
- }
- npc.setTarget(npc);
- npc.doCast(TRASKEN_SKILL_4.getSkill());
- }
- else if (skill.getId() == TRASKEN_SKILL_4.getSkillId())
- {
- npc.setTarget(npc);
- npc.doCast(TRASKEN_SKILL_3.getSkill());
- if (npc.isScriptValue(0))
- {
- final Npc invisibleNpc = addSpawn(npc, INVISIBLE_NPC, npc.getLocation(), false, npc.getInstanceId());
- invisibleNpc.getVariables().set("type", "BOUNCER");
- npc.setScriptValue(1);
- }
- }
- else if (skill.getId() == TRASKEN_SKILL_3.getSkillId())
- {
- npc.setTarget(npc);
- npc.doCast(TRASKEN_SKILL_2.getSkill());
- }
- break;
- }
- case SWOOP_CANNON:
- {
- npc.setTarget(npc);
- npc.doCast(SWOOP_CANNON_SKILL.getSkill());
- break;
- }
- }
- return super.onSpellFinished(npc, player, skill);
- }
-
- @Override
- public String onEventReceived(String event, Npc sender, Npc receiver, WorldObject reference)
- {
- final Instance instance = receiver.getInstanceWorld();
- if (isInInstance(instance))
- {
- if (event.equals("SCE_J4D_DARK_ELF_START"))
- {
- getTimers().addTimer("TIMER_ID_DIE", Rnd.get(60000) + 5000, receiver, null);
- }
- }
- return super.onEventReceived(event, sender, receiver, reference);
- }
-
- @RegisterEvent(EventType.ON_PLAYER_CALL_TO_CHANGE_CLASS)
- @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
- public void onPlayerCallToChangeClass(OnPlayerCallToChangeClass event)
- {
- enterInstance(event.getPlayer(), null, TEMPLATE_ID);
- }
-
- @RegisterEvent(EventType.ON_PLAYER_LOGIN)
- @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
- public void OnPlayerLogin(OnPlayerLogin event)
- {
- if (Config.DISABLE_TUTORIAL)
- {
- return;
- }
-
- final PlayerInstance player = event.getPlayer();
- if ((player.getLevel() > 84) && player.isInCategory(CategoryType.FOURTH_CLASS_GROUP) && !player.isSubClassActive() && (player.getClassId() != ClassId.JUDICATOR) && (player.getRace() != Race.ERTHEIA))
- {
- for (ClassId newClass : player.getClassId().getNextClassIds())
- {
- player.sendPacket(new ExCallToChangeClass(newClass.getId(), false));
- showOnScreenMsg(player, NpcStringId.FREE_THE_GIANT_FROM_HIS_IMPRISONMENT_AND_AWAKEN_YOUR_TRUE_POWER, ExShowScreenMessage.TOP_CENTER, 5000);
- }
- }
- }
-
- @RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
- @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
- public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
- {
- if (Config.DISABLE_TUTORIAL)
- {
- return;
- }
-
- final PlayerInstance player = event.getPlayer();
- if ((player.getLevel() > 84) && player.isInCategory(CategoryType.FOURTH_CLASS_GROUP) && !player.isSubClassActive() && (player.getClassId() != ClassId.JUDICATOR) && (player.getRace() != Race.ERTHEIA))
- {
- for (ClassId newClass : player.getClassId().getNextClassIds())
- {
- player.sendPacket(new ExCallToChangeClass(newClass.getId(), false));
- showOnScreenMsg(player, NpcStringId.FREE_THE_GIANT_FROM_HIS_IMPRISONMENT_AND_AWAKEN_YOUR_TRUE_POWER, ExShowScreenMessage.TOP_CENTER, 5000);
- }
- }
- }
-
- public static void main(String[] args)
- {
- new MemoryOfDisaster();
- }
-}
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/instances/MemoryOfDisaster/calltochange_end.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/instances/MemoryOfDisaster/calltochange_end.htm
deleted file mode 100644
index b87028f919..0000000000
--- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/instances/MemoryOfDisaster/calltochange_end.htm
+++ /dev/null
@@ -1,7 +0,0 @@
-Hermuncus Call:
-My faithful servant Cellphine is waiting to guide you to your fate of Awakening.
-To find Cellphine, go to the Museum, the largest building at Southern most part of Talking Island Village.
-Speak to the Pantheon to enter the Museum and find Cellphine inside.
-Follow Cellphine's instructions to answer my call.
-
-
\ No newline at end of file