diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/AreaSkillNpc.java b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/AreaSkillNpc.java
deleted file mode 100644
index c4011fc39b..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/AreaSkillNpc.java
+++ /dev/null
@@ -1,149 +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 ai.others;
-
-import com.l2jmobius.commons.util.CommonUtil;
-import com.l2jmobius.gameserver.model.StatsSet;
-import com.l2jmobius.gameserver.model.actor.L2Character;
-import com.l2jmobius.gameserver.model.actor.L2Npc;
-import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jmobius.gameserver.model.holders.SkillHolder;
-
-import ai.AbstractNpcAI;
-
-/**
- * Area Skill Npc AI.
- * @author St3eT
- */
-public final class AreaSkillNpc extends AbstractNpcAI
-{
- // NPCs
- private static final int[] BASIC = // area_skill_npc
- {
- 13018, // Maximum Defense
- 13019, // Anti-Music
- 13020, // Maximum Resist Status
- 13021, // Maximum Recovery
- 13022, // Recover Force
- 13023, // Maximize long-range weapon use
- 13024, // Smokescreen
- 13028, // Day of Doom
- 13030, // Anti-Summoning Field
- 13323, // Whisper of Fear
- 13324, // Whisper of Fear
- 13325, // Whisper of Fear
- 13458, // Whisper of Fear
- 13459, // Whisper of Fear
- 13460, // Whisper of Fear
- 13310, // Solo Dance
- 13377, // Solo Dance
- 13378, // Solo Dance
- 13379, // Solo Dance
- 13380, // Solo Dance
- 13381, // Solo Dance
- 13452, // Solo Dance
- 13453, // Solo Dance
- 13454, // Solo Dance
- };
- private static final int[] TOTEMS = // ai_totem_of_body
- {
- 143, // Totem of Body
- 144, // Totem of Spirit
- 145, // Totem of Bravery
- 146, // Totem of Fortitude
- };
- private static final int[] DECOY = // ai_decoy
- {
- 13071, // Virtual Image
- 13072, // Virtual Image
- 13073, // Virtual Image
- 13074, // Virtual Image
- 13075, // Virtual Image
- 13076, // Virtual Image
- 13257, // Virtual Image
- 13258, // Virtual Image
- 13259, // Virtual Image
- 13260, // Virtual Image
- 13261, // Virtual Image
- 13262, // Virtual Image
- 13263, // Virtual Image
- 13264, // Virtual Image
- 13265, // Virtual Image
- 13266, // Virtual Image
- 13267, // Virtual Image
- 13328, // Decoy
- };
-
- private AreaSkillNpc()
- {
- addSpawnId(BASIC);
- addSpawnId(TOTEMS);
- addSpawnId(DECOY);
- }
-
- @Override
- public String onSpawn(L2Npc npc)
- {
- final L2Character summoner = npc.getSummoner();
- if ((summoner != null) && summoner.isPlayer())
- {
- final L2PcInstance player = summoner.getActingPlayer();
-
- if (CommonUtil.contains(BASIC, npc.getId()) || CommonUtil.contains(TOTEMS, npc.getId()))
- {
- final int despawnTime = npc.getTemplate().getParameters().getInt("despawn_time", 7);
- getTimers().addTimer("SKILL_CAST_BASIC", 100, npc, player);
- getTimers().addTimer("DELETE_ME", (despawnTime * 1000), npc, player);
- }
- else if (CommonUtil.contains(DECOY, npc.getId()))
- {
- final int castTime = npc.getTemplate().getParameters().getInt("i_use_term_time", 5000);
- final int despawnTime = npc.getTemplate().getParameters().getInt("i_despawn_time", 30000);
- onTimerEvent("SKILL_CAST_BASIC", null, npc, player); // Trigger cast instantly
- getTimers().addTimer("SKILL_CAST_BASIC", castTime, npc, player);
- getTimers().addTimer("DELETE_ME", despawnTime, npc, player);
- }
- }
- return super.onSpawn(npc);
- }
-
- @Override
- public void onTimerEvent(String event, StatsSet params, L2Npc npc, L2PcInstance player)
- {
- if (event.equals("SKILL_CAST_BASIC"))
- {
- final SkillHolder skill = npc.getParameters().getSkillHolder(CommonUtil.contains(DECOY, npc.getId()) ? "decoy_skill" : "union_skill");
- final int skillDelay = npc.getParameters().getInt("skill_delay", 2);
-
- if (skill != null)
- {
- npc.doCast(skill.getSkill());
- getTimers().addTimer("SKILL_CAST_BASIC", skillDelay * 1000, npc, player);
- }
- }
- else if (event.equals("DELETE_ME"))
- {
- getTimers().cancelTimer("SKILL_CAST_BASIC", npc, player);
- npc.deleteMe();
- }
- }
-
- public static void main(String[] args)
- {
- new AreaSkillNpc();
- }
-}
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Ballista.java b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Ballista.java
deleted file mode 100644
index 672ae72925..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Ballista.java
+++ /dev/null
@@ -1,101 +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 ai.others;
-
-import com.l2jmobius.Config;
-import com.l2jmobius.gameserver.model.L2Object;
-import com.l2jmobius.gameserver.model.actor.L2Npc;
-import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jmobius.gameserver.model.holders.SkillHolder;
-import com.l2jmobius.gameserver.model.skills.Skill;
-import com.l2jmobius.gameserver.network.SystemMessageId;
-
-import ai.AbstractNpcAI;
-
-/**
- * Ballista AI.
- * @author St3eT
- */
-public final class Ballista extends AbstractNpcAI
-{
- // NPCs
- private static final int[] BALLISTA =
- {
- 35685, // Shanty Fortress
- 35723, // Southern Fortress
- 35754, // Hive Fortress
- 35792, // Valley Fortress
- 35823, // Ivory Fortress
- 35854, // Narsell Fortress
- 35892, // Bayou Fortress
- 35923, // White Sands Fortress
- 35961, // Borderland Fortress
- 35999, // Swamp Fortress
- 36030, // Archaic Fortress
- 36068, // Floran Fortress
- 36106, // Cloud Mountain)
- 36137, // Tanor Fortress
- 36168, // Dragonspine Fortress
- 36206, // Antharas's Fortress
- 36244, // Western Fortress
- 36282, // Hunter's Fortress
- 36313, // Aaru Fortress
- 36351, // Demon Fortress
- 36389, // Monastic Fortress
- };
- // Skill
- private static final SkillHolder BOMB = new SkillHolder(2342, 1); // Ballista Bomb
- // Misc
- private static final int MIN_CLAN_LV = 5;
-
- private Ballista()
- {
- addSkillSeeId(BALLISTA);
- addSpawnId(BALLISTA);
- }
-
- @Override
- public String onSkillSee(L2Npc npc, L2PcInstance caster, Skill skill, L2Object[] targets, boolean isSummon)
- {
- if ((skill != null) && (caster.getTarget() == npc) && (getRandom(100) < 40) && (skill == BOMB.getSkill()))
- {
- if (npc.getFort().getSiege().isInProgress())
- {
- if ((caster.getClan() != null) && (caster.getClan().getLevel() >= MIN_CLAN_LV))
- {
- caster.getClan().addReputationScore(Config.BALLISTA_POINTS, true);
- caster.sendPacket(SystemMessageId.THE_BALLISTA_HAS_BEEN_SUCCESSFULLY_DESTROYED_THE_CLAN_REPUTATION_WILL_BE_INCREASED);
- }
- }
- npc.doDie(caster);
- }
- return super.onSkillSee(npc, caster, skill, targets, isSummon);
- }
-
- @Override
- public String onSpawn(L2Npc npc)
- {
- npc.disableCoreAI(true);
- npc.setUndying(true);
- return super.onSpawn(npc);
- }
-
- public static void main(String[] args)
- {
- new Ballista();
- }
-}
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/CastleCourtMagician.java b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/CastleCourtMagician.java
deleted file mode 100644
index ff6975b3f2..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/CastleCourtMagician.java
+++ /dev/null
@@ -1,410 +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 ai.others.CastleCourtMagician;
-
-import com.l2jmobius.gameserver.data.xml.impl.MultisellData;
-import com.l2jmobius.gameserver.enums.CastleSide;
-import com.l2jmobius.gameserver.enums.CategoryType;
-import com.l2jmobius.gameserver.model.ClanPrivilege;
-import com.l2jmobius.gameserver.model.actor.L2Npc;
-import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jmobius.gameserver.model.holders.SkillHolder;
-import com.l2jmobius.gameserver.network.clientpackets.RequestAcquireSkill;
-
-import ai.AbstractNpcAI;
-import handlers.effecthandlers.CallPc;
-
-/**
- * Castle Court Magician AI.
- * @author St3eT
- */
-public final class CastleCourtMagician extends AbstractNpcAI
-{
- // NPCs
- private static final int[] COURT_MAGICIAN =
- {
- 35648, // Gludio
- 35649, // Dion
- 35650, // Giran
- 35651, // Oren
- 35652, // Aden
- 35653, // Innadril
- 35654, // Goddard
- 35655, // Rune
- 35656, // Schuttgart
- };
- // Skills
- private static final int CLAN_GATE = 3632; // Clan Gate
- private static final SkillHolder DISPLAY_CLAN_GATE = new SkillHolder(5109, 1); // Production - Clan Gate
- // Items
- private static final int CLOAK_OF_LIGHT = 34925;
- private static final int CLOAK_OF_DARK = 34926;
- private static final int EPAULETTE = 9912; // Knight's Epaulette
- private static final int RED_MEDITATION = 9931; // Red Talisman of Meditation
- private static final int BLUE_DIV_PROTECTION = 9932; // Blue Talisman - Divine Protection
- private static final int BLUE_EXPLOSION = 10416; // Blue Talisman - Explosion
- private static final int BLUE_M_EXPLOSION = 10417; // Blue Talisman - Magic Explosion
- private static final int RED_MIN_CLARITY = 9917; // Red Talisman of Minimum Clarity
- private static final int RED_MAX_CLARITY = 9918; // Red Talisman of Maximum Clarity
- private static final int RED_MENTAL_REG = 9928; // Red Talisman of Mental Regeneration
- private static final int BLUE_PROTECTION = 9929; // Blue Talisman of Protection
- private static final int BLUE_INVIS = 9920; // Blue Talisman of Invisibility
- private static final int BLUE_DEFENSE = 9916; // Blue Talisman of Defense
- private static final int BLACK_ESCAPE = 9923; // Black Talisman - Escape
- private static final int BLUE_HEALING = 9924; // Blue Talisman of Healing
- private static final int RED_RECOVERY = 9925; // Red Talisman of Recovery
- private static final int BLUE_DEFENSE2 = 9926; // Blue Talisman of Defense
- private static final int BLUE_M_DEFENSE = 9927; // Blue Talisman of Magic Defense
- private static final int RED_LIFE_FORCE = 10518; // Red Talisman - Life Force
- private static final int BLUE_GREAT_HEAL = 10424; // Blue Talisman - Greater Healing
- private static final int WHITE_FIRE = 10421; // White Talisman - Fire
- private static final int[] COMMON_TALISMANS =
- {
- 9914, // Blue Talisman of Power
- 9915, // Blue Talisman of Wild Magic
- 9920, // Blue Talisman of Invisibility
- 9921, // Blue Talisman - Shield Protection
- 9922, // Black Talisman - Mending
- 9933, // Yellow Talisman of Power
- 9934, // Yellow Talisman of Violent Haste
- 9935, // Yellow Talisman of Arcane Defense
- 9936, // Yellow Talisman of Arcane Power
- 9937, // Yellow Talisman of Arcane Haste
- 9938, // Yellow Talisman of Accuracy
- 9939, // Yellow Talisman of Defense
- 9940, // Yellow Talisman of Alacrity
- 9941, // Yellow Talisman of Speed
- 9942, // Yellow Talisman of Critical Reduction
- 9943, // Yellow Talisman of Critical Damage
- 9944, // Yellow Talisman of Critical Dodging
- 9945, // Yellow Talisman of Evasion
- 9946, // Yellow Talisman of Healing
- 9947, // Yellow Talisman of CP Regeneration
- 9948, // Yellow Talisman of Physical Regeneration
- 9949, // Yellow Talisman of Mental Regeneration
- 9950, // Grey Talisman of Weight Training
- 9952, // Orange Talisman - Hot Springs CP Potion
- 9953, // Orange Talisman - Elixir of Life
- 9954, // Orange Talisman - Elixir of Mental Strength
- 9955, // Black Talisman - Vocalization
- 9956, // Black Talisman - Arcane Freedom
- 9957, // Black Talisman - Physical Freedom
- 9958, // Black Talisman - Rescue
- 9959, // Black Talisman - Free Speech
- 9960, // White Talisman of Bravery
- 9961, // White Talisman of Motion
- 9962, // White Talisman of Grounding
- 9963, // White Talisman of Attention
- 9964, // White Talisman of Bandages
- 9965, // White Talisman of Protection
- 10418, // White Talisman - Storm
- 10420, // White Talisman - Water
- 10519, // White Talisman - Earth
- 10422, // White Talisman - Light
- 10423, // Blue Talisman - Self-Destruction
- 10419, // White Talisman - Darkness
- };
- // Misc
- private static final CategoryType[] AWAKENED_CT =
- {
- CategoryType.SIGEL_GROUP,
- CategoryType.TYRR_GROUP,
- CategoryType.OTHELL_GROUP,
- CategoryType.YUL_GROUP,
- CategoryType.FEOH_GROUP,
- CategoryType.ISS_GROUP,
- CategoryType.WYNN_GROUP,
- CategoryType.AEORE_GROUP,
- };
-
- private CastleCourtMagician()
- {
- addStartNpc(COURT_MAGICIAN);
- addTalkId(COURT_MAGICIAN);
- addFirstTalkId(COURT_MAGICIAN);
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if ((player.getClan() == null) && (player.getClanId() != npc.getCastle().getOwnerId()))
- {
- return "courtmagician-01.html";
- }
-
- String htmltext = null;
- int itemId = 0;
- switch (event)
- {
- case "courtmagician.html":
- case "courtmagician-03.html":
- case "courtmagician-07.html":
- case "courtmagician-11.html":
- {
- htmltext = event;
- break;
- }
- case "giveTalisman":
- {
- if (getQuestItemsCount(player, EPAULETTE) < 10)
- {
- htmltext = "courtmagician-06.html";
- break;
- }
-
- final int categoryChance = getRandom(100);
- if (categoryChance <= 5)
- {
- final int chance = getRandom(100);
- if (chance <= 25)
- {
- itemId = RED_MEDITATION;
- }
- else if (chance <= 50)
- {
- itemId = BLUE_DIV_PROTECTION;
- }
- else if (chance <= 75)
- {
- itemId = BLUE_EXPLOSION;
- }
- else
- {
- itemId = BLUE_M_EXPLOSION;
- }
- }
- else if (categoryChance <= 15)
- {
- final int chance = getRandom(100);
- if (chance <= 20)
- {
- itemId = RED_MIN_CLARITY;
- }
- else if (chance <= 40)
- {
- itemId = RED_MAX_CLARITY;
- }
- else if (chance <= 60)
- {
- itemId = RED_MENTAL_REG;
- }
- else if (chance <= 80)
- {
- itemId = BLUE_PROTECTION;
- }
- else
- {
- itemId = BLUE_INVIS;
- }
- }
- else if (categoryChance <= 30)
- {
- final int chance = getRandom(100);
- if (chance <= 12)
- {
- itemId = BLUE_DEFENSE;
- }
- else if (chance <= 25)
- {
- itemId = BLACK_ESCAPE;
- }
- else if (chance <= 37)
- {
- itemId = BLUE_HEALING;
- }
- else if (chance <= 50)
- {
- itemId = RED_RECOVERY;
- }
- else if (chance <= 62)
- {
- itemId = BLUE_DEFENSE2;
- }
- else if (chance <= 75)
- {
- itemId = BLUE_M_DEFENSE;
- }
- else if (chance <= 87)
- {
- itemId = RED_LIFE_FORCE;
- }
- else
- {
- itemId = BLUE_GREAT_HEAL;
- }
- }
- else
- {
- final int chance = getRandom(46);
- if (chance <= 42)
- {
- itemId = COMMON_TALISMANS[chance];
- }
- else
- {
- itemId = WHITE_FIRE;
- }
- }
- takeItems(player, EPAULETTE, 10);
- giveItems(player, itemId, 1);
- htmltext = "courtmagician-04.html";
- break;
- }
- case "giveTalismanR":
- {
- htmltext = player.isInCategory(CategoryType.AWAKEN_GROUP) ? "courtmagician-09.html" : "courtmagician-10.html";
- break;
- }
- case "giveTalismanR_classSpecific":
- {
- final int playerLevel = player.getLevel();
- if ((playerLevel >= 85) && (playerLevel < 90))
- {
- showClassSpecificMultisell(player, npc, 797);
- }
- else if ((playerLevel >= 90) && (playerLevel < 95))
- {
- showClassSpecificMultisell(player, npc, 805);
- }
- else if ((playerLevel >= 95) && (playerLevel <= 98))
- {
- showClassSpecificMultisell(player, npc, 813);
- }
- else if (playerLevel >= 99) // TODO: Glory Days AI use "else if (talker->level == 99)" but on IO is max level 106 - need be confirmed for 100+ chars
- {
- showClassSpecificMultisell(player, npc, 821);
- }
- break;
- }
- case "giveTalismanR_active":
- {
- final int playerLevel = player.getLevel();
- if ((playerLevel >= 85) && (playerLevel < 90))
- {
- MultisellData.getInstance().separateAndSend(789, player, npc, false);
- }
- else if ((playerLevel >= 90) && (playerLevel < 95))
- {
- MultisellData.getInstance().separateAndSend(794, player, npc, false);
- }
- else if ((playerLevel >= 95) && (playerLevel < 99))
- {
- MultisellData.getInstance().separateAndSend(795, player, npc, false);
- }
- else if (playerLevel >= 99) // TODO: Glory Days AI use "else if (talker->level == 99)" but on IO is max level 106 - need be confirmed for 100+ chars
- {
- MultisellData.getInstance().separateAndSend(796, player, npc, false);
- }
- break;
- }
- case "giveTalismanR_passive":
- {
- final int playerLevel = player.getLevel();
- if ((playerLevel >= 85) && (playerLevel < 90))
- {
- MultisellData.getInstance().separateAndSend(789, player, npc, false);
- }
- else if ((playerLevel >= 90) && (playerLevel < 95))
- {
- MultisellData.getInstance().separateAndSend(790, player, npc, false);
- }
- else if ((playerLevel >= 95) && (playerLevel < 99))
- {
- MultisellData.getInstance().separateAndSend(791, player, npc, false);
- }
- else if (playerLevel >= 99) // TODO: Glory Days AI use "else if (talker->level == 99)" but on IO is max level 106 - need be confirmed for 100+ chars
- {
- MultisellData.getInstance().separateAndSend(792, player, npc, false);
- }
- break;
- }
- case "squadSkill":
- {
- if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME))
- {
- RequestAcquireSkill.showSubUnitSkillList(player);
- }
- else
- {
- htmltext = "courtmagician-05.html";
- }
- break;
- }
- case "clanTeleport":
- {
- if (player.getClanId() == npc.getCastle().getOwnerId())
- {
- final L2PcInstance clanLeader = player.getClan().getLeader().getPlayerInstance();
-
- if ((clanLeader != null) && clanLeader.isAffectedBySkill(CLAN_GATE))
- {
- if (CallPc.checkSummonTargetStatus(player, clanLeader)) // TODO: Custom one, retail dont check it but for sure lets check same conditions like when summon player by skill.
- {
- npc.setTarget(player);
- npc.doCast(DISPLAY_CLAN_GATE.getSkill());
- player.teleToLocation(clanLeader.getLocation(), true);
- }
- }
- else
- {
- htmltext = "courtmagician-02.html";
- }
- }
- break;
- }
- case "giveCloak":
- {
- final int cloakId = npc.getCastle().getSide() == CastleSide.DARK ? CLOAK_OF_DARK : CLOAK_OF_LIGHT;
-
- if (hasQuestItems(player, cloakId))
- {
- htmltext = "courtmagician-08.html";
- break;
- }
- giveItems(player, cloakId, 1);
- break;
- }
- }
- return htmltext;
- }
-
- @Override
- public String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- return ((player.getClan() != null) && (player.getClanId() == npc.getCastle().getOwnerId())) ? "courtmagician.html" : "courtmagician-01.html";
- }
-
- private void showClassSpecificMultisell(L2PcInstance player, L2Npc npc, int index)
- {
- for (CategoryType ct : AWAKENED_CT)
- {
- if (player.isInCategory(ct))
- {
- MultisellData.getInstance().separateAndSend(index, player, npc, false);
- }
- else
- {
- index++;
- }
- }
- }
-
- public static void main(String[] args)
- {
- new CastleCourtMagician();
- }
-}
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-01.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-01.html
deleted file mode 100644
index b26274a3ff..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-01.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
Court Magician:
-Can't you see that I am busy? If you continue to bother me, I will turn you into a frog!
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-02.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-02.html
deleted file mode 100644
index 56112c9d6e..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-02.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Court Magician:
-I cannot find the lord's signal right now, so it is impossible to cast the spell.
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-03.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-03.html
deleted file mode 100644
index 0a1da5ee0b..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-03.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-A Talisman is an interesting mana item. When used on your wrist, it'll give you awesome results. However, you'll need to prove to me that you're worthy of such power. As a proof, give me 10 Knight's Epaulettes and I will reward you with a Fortress Talisman. Then, I can exchange them for you.
-
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-04.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-04.html
deleted file mode 100644
index a94976a0f0..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-04.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-Very well. Here you go!
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-05.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-05.html
deleted file mode 100644
index e5c1e59e18..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-05.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-If you cannot prove your worthiness, I cannot give it to you. Please leave!
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-06.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-06.html
deleted file mode 100644
index bc82169332..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-06.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
-You do not have enough Knight's Epaulettes.
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-07.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-07.html
deleted file mode 100644
index 7574881a29..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-07.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Court Wizard:
-Only those who are a Marquis or higher can receive the cloak. You cannot receive more than one cloak either, I might add.
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-08.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-08.html
deleted file mode 100644
index 5aff018edd..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-08.html
+++ /dev/null
@@ -1,5 +0,0 @@
-Court Magician:
-
-Don't you already have the cloak?
-
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-09.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-09.html
deleted file mode 100644
index 43c487ff65..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-09.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
-Please select which of the following types of talisman you want.
-
-
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-10.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-10.html
deleted file mode 100644
index 23d7731005..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-10.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-An unawakened character cannot buy the corresponding Talisman.
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-11.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-11.html
deleted file mode 100644
index 0dbc3c4be5..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician-11.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
-Please select the type of talisman that you want.
-
-
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician.html
deleted file mode 100644
index fcf402bb7c..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CastleCourtMagician/courtmagician.html
+++ /dev/null
@@ -1,15 +0,0 @@
-Court Magician:
-Cast your eyes upon the results of this magical research conducted by the Mystics Guild.
-You can make use of a magical field capable of teleporting a clan member through a crown, as well as magic that provides special abilities to your low-ranking soldiers. We even have a Talisman, a magical crystal filled with power.
-We have also purchased certain items directly from the Elves' mystical merchant. How may I serve you?
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-01.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-01.html
deleted file mode 100644
index 2ef96d7168..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-01.html
+++ /dev/null
@@ -1,5 +0,0 @@
-Clan Trader Mulia:
-I seek the leader of a Clan!
-That person alone can validate their Clan's reputation and be justly rewarded for doing so...
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-02.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-02.html
deleted file mode 100644
index 0aa7675b86..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-02.html
+++ /dev/null
@@ -1,9 +0,0 @@
-Clan Trader Mulia:
-There are many ways to increase your clan's reputation, from capturing a castle or fortress in battle, to helping out wandering newbies. Protecting a territory is also laudable, and in that spirit I wish to make you an offer if you can bring me these items:
-1 Blood Alliance to prove that you have successfully defended a castle, 10 Blood Oaths gained by preserving civic order in a territory, and finally 100 Knight's Epaulettes to prove that you are invincible in battle.
-Bring me these things, and I will personally see to it that your reputation increases.
-
-
-
-
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-03.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-03.html
deleted file mode 100644
index eaefdb1f08..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-03.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Clan Trader Mulia:
-You have not brought a sufficient number of the items I requested to justify an increase in reputation.
-
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-04.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-04.html
deleted file mode 100644
index ceebe21c9a..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-04.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Clan Trader Mulia:
-Your reputation has been increased.
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-05.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-05.html
deleted file mode 100644
index 41c6ac2336..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-05.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Clan Trader Mulia:
-The maximum clan level for raising reputation is 5.
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-06.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-06.html
deleted file mode 100644
index 51abc56741..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024-06.html
+++ /dev/null
@@ -1,6 +0,0 @@
-Clan Trader Mulia:
-Leading one, or one who has been charged with the legacy. Are you the one?
-Only then can you claim the prize of your clan's repute. But if you are a clan member, you may buy a Clan Cloak. Well?
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024.html
deleted file mode 100644
index 3a26b0b917..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32024.html
+++ /dev/null
@@ -1,8 +0,0 @@
-Clan Trader Mulia:
-Oh, renowned leader of the clan! What business do you have with me?
-
-
-
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-01.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-01.html
deleted file mode 100644
index 42a5fd0556..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-01.html
+++ /dev/null
@@ -1,6 +0,0 @@
-Clan Trader Ilia:
-I seek a partner to a blood oath, the most sacred pledge of allegiance!
-I will not release any item to anyone else!
-Our reputation depends on it!
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-02.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-02.html
deleted file mode 100644
index 904fd481f3..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-02.html
+++ /dev/null
@@ -1,9 +0,0 @@
-Clan Trader Ilia:
-There are many ways to increase your clan's reputation, from capturing a castle or fortress in battle, to helping out wandering newbies. Protecting a territory is also laudable, and in that spirit I wish to make you an offer if you can bring me these items:
-1 Blood Alliance to prove that you have successfully defended a castle, 10 Blood Oaths gained by preserving civic order in a territory, and finally 100 Knight's Epaulettes to prove that you are invincible in battle.
-Bring me these things, and I will personally see to it that your reputation increases.
-
-
-
-
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-03.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-03.html
deleted file mode 100644
index 35cb3cce18..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-03.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Clan Trader Ilia:
-You have not brought a sufficient number of the items I requested to justify an increase in reputation.
-
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-04.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-04.html
deleted file mode 100644
index abea493e00..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-04.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Clan Trader Ilia:
-Your reputation has been increased.
-
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-05.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-05.html
deleted file mode 100644
index b4bf79287c..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-05.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Clan Trader Ilia:
-The maximum clan level for raising reputation is 5.
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-06.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-06.html
deleted file mode 100644
index 187c8a1845..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025-06.html
+++ /dev/null
@@ -1,6 +0,0 @@
-Clan Trader Ilia:
-An oath sworn in blood. The promise to rise and fall as one. Are you a keeper of this oath?
-If you are not, and have no permission from the keeper of the oath, touch nothing here! But if you are a clan member, you may buy a Clan Cloak. Well?
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025.html
deleted file mode 100644
index 3e4de05360..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/32025.html
+++ /dev/null
@@ -1,8 +0,0 @@
-Clan Trader Ilia:
-We swore the blood oath together, did we not? If you are that oath-holder, come speak with me.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/ClanTrader.java b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/ClanTrader.java
deleted file mode 100644
index 091d1a9ac9..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/ClanTrader/ClanTrader.java
+++ /dev/null
@@ -1,127 +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 ai.others.ClanTrader;
-
-import com.l2jmobius.Config;
-import com.l2jmobius.gameserver.model.ClanPrivilege;
-import com.l2jmobius.gameserver.model.actor.L2Npc;
-import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jmobius.gameserver.network.SystemMessageId;
-import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
-
-import ai.AbstractNpcAI;
-
-/**
- * Clan Trader AI.
- * @author St3eT
- */
-public final class ClanTrader extends AbstractNpcAI
-{
- // NPCs
- private static final int[] CLAN_TRADER =
- {
- 32024, // Mulia
- 32025, // Ilia
- };
- // Items
- private static final int BLOOD_ALLIANCE = 9911; // Blood Alliance
- private static final int BLOOD_ALLIANCE_COUNT = 1; // Blood Alliance Count
- private static final int BLOOD_OATH = 9910; // Blood Oath
- private static final int BLOOD_OATH_COUNT = 10; // Blood Oath Count
- private static final int KNIGHTS_EPAULETTE = 9912; // Knight's Epaulette
- private static final int KNIGHTS_EPAULETTE_COUNT = 100; // Knight's Epaulette Count
-
- private ClanTrader()
- {
- addStartNpc(CLAN_TRADER);
- addTalkId(CLAN_TRADER);
- addFirstTalkId(CLAN_TRADER);
- }
-
- private String giveReputation(L2Npc npc, L2PcInstance player, int count, int itemId, int itemCount)
- {
- if (getQuestItemsCount(player, itemId) >= itemCount)
- {
- takeItems(player, itemId, itemCount);
- player.getClan().addReputationScore(count, true);
-
- final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOUR_CLAN_HAS_ADDED_S1_POINT_S_TO_ITS_CLAN_REPUTATION);
- sm.addInt(count);
- player.sendPacket(sm);
- return npc.getId() + "-04.html";
- }
- return npc.getId() + "-03.html";
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- String htmltext = null;
- switch (event)
- {
- case "32024.html":
- case "32024-02.html":
- case "32025.html":
- case "32025-02.html":
- {
- htmltext = event;
- break;
- }
- case "repinfo":
- {
- htmltext = (player.getClan().getLevel() > 4) ? npc.getId() + "-02.html" : npc.getId() + "-05.html";
- break;
- }
- case "exchange-ba":
- {
- htmltext = giveReputation(npc, player, Config.BLOODALLIANCE_POINTS, BLOOD_ALLIANCE, BLOOD_ALLIANCE_COUNT);
- break;
- }
- case "exchange-bo":
- {
- htmltext = giveReputation(npc, player, Config.BLOODOATH_POINTS, BLOOD_OATH, BLOOD_OATH_COUNT);
- break;
- }
- case "exchange-ke":
- {
- htmltext = giveReputation(npc, player, Config.KNIGHTSEPAULETTE_POINTS, KNIGHTS_EPAULETTE, KNIGHTS_EPAULETTE_COUNT);
- break;
- }
- }
- return htmltext;
- }
-
- @Override
- public String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- String htmltext = null;
- if (player.getClanId() > 0)
- {
- htmltext = npc.getId() + ((player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) ? ".html" : "-06.html");
- }
- else
- {
- htmltext = npc.getId() + "-01.html";
- }
- return htmltext;
- }
-
- public static void main(String[] args)
- {
- new ClanTrader();
- }
-}
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CrimsonHatuOtis.java b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CrimsonHatuOtis.java
deleted file mode 100644
index f590ce898a..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/CrimsonHatuOtis.java
+++ /dev/null
@@ -1,104 +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 ai.others;
-
-import com.l2jmobius.gameserver.enums.ChatType;
-import com.l2jmobius.gameserver.model.actor.L2Npc;
-import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jmobius.gameserver.model.holders.SkillHolder;
-import com.l2jmobius.gameserver.network.NpcStringId;
-
-import ai.AbstractNpcAI;
-
-/**
- * AI for Kamaloka (33) - Crimson Hatu Otis
- * @author Gladicek
- */
-public final class CrimsonHatuOtis extends AbstractNpcAI
-{
- // Npc
- private static final int CRIMSON_HATU_OTIS = 18558;
- // Skills
- private static SkillHolder BOSS_SPINING_SLASH = new SkillHolder(4737, 1);
- private static SkillHolder BOSS_HASTE = new SkillHolder(4175, 1);
-
- private CrimsonHatuOtis()
- {
- addAttackId(CRIMSON_HATU_OTIS);
- addKillId(CRIMSON_HATU_OTIS);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- switch (event)
- {
- case "SKILL":
- {
- if (npc.isDead())
- {
- cancelQuestTimer("SKILL", npc, null);
- return null;
- }
- npc.setTarget(player);
- npc.doCast(BOSS_SPINING_SLASH.getSkill());
- startQuestTimer("SKILL", 60000, npc, null);
- break;
- }
- case "BUFF":
- {
- if (npc.isScriptValue(2))
- {
- npc.setTarget(npc);
- npc.doCast(BOSS_HASTE.getSkill());
- }
- break;
- }
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
- {
- if (npc.isScriptValue(0))
- {
- npc.setScriptValue(1);
- startQuestTimer("SKILL", 5000, npc, null);
- }
- else if (npc.isScriptValue(1) && (npc.getCurrentHp() < (npc.getMaxHp() * 0.3)))
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.I_VE_HAD_IT_UP_TO_HERE_WITH_YOU_I_LL_TAKE_CARE_OF_YOU);
- npc.setScriptValue(2);
- startQuestTimer("BUFF", 1000, npc, null);
- }
- return super.onAttack(npc, attacker, damage, isSummon);
- }
-
- @Override
- public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
- {
- cancelQuestTimer("SKILL", npc, null);
- cancelQuestTimer("BUFF", npc, null);
- return super.onKill(npc, player, isSummon);
- }
-
- public static void main(String[] args)
- {
- new CrimsonHatuOtis();
- }
-}
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-01.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-01.html
deleted file mode 100644
index e857d658cb..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-01.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Reputation Manager Rapidus:
-You have not yet met the qualifications. (Requires completion of second class transfer and Clan Fame level above 40.)
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-02.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-02.html
deleted file mode 100644
index aa0a1a784d..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-02.html
+++ /dev/null
@@ -1,7 +0,0 @@
-Reputation Manager Rapidus:
-Tell me what you want, and if you are worthy I will help you.
-If you have already bestowed them with a special ability, top-grade weapons and armor can be enhanced beyond A-Grade especially for PvP combat. Once a multi-user item is specialized, you will still be able to enchant the item. However, you cannot augment, crystallize, convert or add an attribute to it. Think carefully before making a decision...
-
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-03.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-03.html
deleted file mode 100644
index 249ba6d9bd..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-03.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Reputation Manager Rapidus:
-If you are not part of a clan, or if your clan status is too low, your victory cannot be recognized.
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-04.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-04.html
deleted file mode 100644
index b8d972dce2..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-04.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Reputation Manager Rapidus:
-Your clan will be proud of you.
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-05.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-05.html
deleted file mode 100644
index 94cbb947d1..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-05.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Reputation Manager Rapidus:
-You have no sins for which you need to atone.
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-06.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-06.html
deleted file mode 100644
index 4dc0d9d25f..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-06.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Reputation Manager Rapidus:
-No matter what excuses you make, there is no justifying murder. From now on, make every effort to obey the law. Do not fail!
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-07.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-07.html
deleted file mode 100644
index 9da796f0a3..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479-07.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Reputation Manager Rapidus:
-Fame comes naturally when one takes an active part in battles with others. If you have clan members with the same goal, consider participating in Castle Sieges, Fortress Battles and Clan Hall Battles. If you have party members who work extremely well together, try your luck in the Underground Coliseum Game or the Festival of Darkness. If you are alone, demonstrate your prowess by participating in the Olympiad.
-You can use Clan Reputation Points earned in any of the above games to help increase your clan's fame or improve your own PVP capabilities.
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479.html
deleted file mode 100644
index 45590e1584..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36479.html
+++ /dev/null
@@ -1,7 +0,0 @@
-Reputation Manager Rapidus:
-O victorious one, have you set your next goal? I have prepared something for you. You will be awarded according to your distinguished service. What is it that you seek?
-
-
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-01.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-01.html
deleted file mode 100644
index 7c1d822b7c..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-01.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Reputation Manager Scipio:
-Diplomacy is sometimes wiser than fighting. Nevertheless, Warriors need power if they are to protect those who depend on them. (Requires completion of second class transfer and Clan Fame level above 40.)
-
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-02.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-02.html
deleted file mode 100644
index 536ed4bfa6..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-02.html
+++ /dev/null
@@ -1,8 +0,0 @@
-Reputation Manager Scipio:
-If you need something, please let me know.
-Weapons and armor can be enhanced beyond Grade A for top-grade items and specialized for PvP. Weapons must have bestowed special abilities... Once it is enhanced, an item can only be used by its owner.
-And once a multi-user item is specialized, you can use enhanced Spellbooks, but you cannot augment, soul crystalize or convert it. Be careful so that you don't have to cancel the effect.
-
-
-
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-03.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-03.html
deleted file mode 100644
index 4990f85e80..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-03.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Reputation Manager Scipio:
-Whether or not you are a member of a clan, your victory cannot be acknowledged unless you possess Clan Reputation Points. Work harder for the benefit of your clan and fame will follow.
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-04.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-04.html
deleted file mode 100644
index c1f3b2284a..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-04.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Reputation Manager Scipio:
-You are the pride of your clan!
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-05.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-05.html
deleted file mode 100644
index 60b8c958d4..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-05.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Reputation Manager Scipio:
-You do not need to ask for forgiveness by lowering your Clan Fame if you did not commit an offense.
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-06.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-06.html
deleted file mode 100644
index 7c74c92225..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-06.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Reputation Manager Scipio:
-You have committed a serious crime! No matter the circumstances, murder is inexcusable. I will forgive you this once, but do not do this again or the consequences will be dire...
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-07.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-07.html
deleted file mode 100644
index 043b6cda18..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480-07.html
+++ /dev/null
@@ -1,5 +0,0 @@
-Reputation Manager Scipio:
-Fame comes naturally when one takes an active part in battles with others. If you have clan members with the same goal, consider jointly participating in Castle Sieges, Fortress Battles and Clan Hall Battles. If you have party members who work extremely well together, try your luck in the Underground Coliseum Game or at the Festival of Darkness. If you are alone, demonstrate your prowess by participating in the Olympiad.
-You can use Clan Reputation Points earned in any of the above games to help increase your clan's fame or improve your own PvP capabilities.
-
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480.html
deleted file mode 100644
index f18fe5a3e0..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/36480.html
+++ /dev/null
@@ -1,7 +0,0 @@
-Reputation Manager Scipio:
-Warrior, are you confident that your actions are undertaken for the sake of peace rather than to serve your own greed? If so, your reward shall be as great as your accomplishment. What do you seek?
-
-
-
-
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/FameManager.java b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/FameManager.java
deleted file mode 100644
index a71ae03bb2..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/FameManager/FameManager.java
+++ /dev/null
@@ -1,127 +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 ai.others.FameManager;
-
-import com.l2jmobius.gameserver.model.actor.L2Npc;
-import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jmobius.gameserver.network.SystemMessageId;
-import com.l2jmobius.gameserver.network.serverpackets.UserInfo;
-
-import ai.AbstractNpcAI;
-
-/**
- * Fame Manager AI.
- * @author St3eT
- */
-public final class FameManager extends AbstractNpcAI
-{
- // Npc
- private static final int[] FAME_MANAGER =
- {
- 36479, // Rapidus
- 36480, // Scipio
- };
- // Misc
- private static final int MIN_LVL = 40;
- private static final int DECREASE_COST = 5000;
- private static final int REPUTATION_COST = 1000;
- private static final int MIN_CLAN_LVL = 5;
- private static final int CLASS_LVL = 2;
-
- private FameManager()
- {
- addStartNpc(FAME_MANAGER);
- addTalkId(FAME_MANAGER);
- addFirstTalkId(FAME_MANAGER);
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- String htmltext = null;
- switch (event)
- {
- case "36479.html":
- case "36479-02.html":
- case "36479-07.html":
- case "36480.html":
- case "36480-02.html":
- case "36480-07.html":
- {
- htmltext = event;
- break;
- }
- case "decreasePk":
- {
- if (player.getPkKills() > 0)
- {
- if ((player.getFame() >= DECREASE_COST) && (player.getLevel() >= MIN_LVL) && (player.getClassId().level() >= CLASS_LVL))
- {
- player.setFame(player.getFame() - DECREASE_COST);
- player.setPkKills(player.getPkKills() - 1);
- player.sendPacket(new UserInfo(player));
- htmltext = npc.getId() + "-06.html";
- }
- else
- {
- htmltext = npc.getId() + "-01.html";
- }
- }
- else
- {
- htmltext = npc.getId() + "-05.html";
- }
- break;
- }
- case "clanRep":
- {
- if ((player.getClan() != null) && (player.getClan().getLevel() >= MIN_CLAN_LVL))
- {
- if ((player.getFame() >= REPUTATION_COST) && (player.getLevel() >= MIN_LVL) && (player.getClassId().level() >= CLASS_LVL))
- {
- player.setFame(player.getFame() - REPUTATION_COST);
- player.getClan().addReputationScore(50, true);
- player.sendPacket(new UserInfo(player));
- player.sendPacket(SystemMessageId.YOU_HAVE_ACQUIRED_50_CLAN_REPUTATION);
- htmltext = npc.getId() + "-04.html";
- }
- else
- {
- htmltext = npc.getId() + "-01.html";
- }
- }
- else
- {
- htmltext = npc.getId() + "-03.html";
- }
- break;
- }
- }
- return htmltext;
- }
-
- @Override
- public String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- return ((player.getFame() > 0) && (player.getLevel() >= MIN_LVL) && (player.getClassId().level() >= CLASS_LVL)) ? npc.getId() + ".html" : npc.getId() + "-01.html";
- }
-
- public static void main(String[] args)
- {
- new FameManager();
- }
-}
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-02.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-02.html
deleted file mode 100644
index 4e28b0c542..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-02.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Treasure seeker Sumiel:
-Is it hard? Yeah, true. Looking at the torch, we can do it about two more times. You using the lighting skill on the lighted torch?
-
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-03.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-03.html
deleted file mode 100644
index 6a1ca52dc4..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-03.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Treasure seeker Sumiel:
-Last time. Concentrate on the treasure to appear. We can't try if the torch is all burnt.
-
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-04.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-04.html
deleted file mode 100644
index cc48a613ad..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-04.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Treasure Seeker Sumiel:
-Now's not the time. There's another adventurer trying. Wait your turn! Haha!
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-05.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-05.html
deleted file mode 100644
index cb924b09ac..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-05.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Treasure Seeker Sumiel:
-No, there's none. You have to light it the moment the furnace is turned on.
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-06.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-06.html
deleted file mode 100644
index fe04c11deb..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-06.html
+++ /dev/null
@@ -1,5 +0,0 @@
-Treasure seeker Sumiel:
-Is that so? If you say so... so what else can I do for you?
-
-
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-07.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-07.html
deleted file mode 100644
index 97bd740b4e..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-07.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Treasure seeker Sumiel:
-Ha, ha, you're funny. Since you started already, light up the rest.
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-08.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-08.html
deleted file mode 100644
index 8c24ee4678..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758-08.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Treasure seeker Sumiel:
-Ekoo... wait. I'm not ready yet. I need to clean up, this equipment has fingerprints all over it! Give me 3 minutes, I'll be ready then.
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758.html
deleted file mode 100644
index 2da37c1e2c..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/32758.html
+++ /dev/null
@@ -1,6 +0,0 @@
-Treasure seeker Sumiel:
-Success! You've found this room, wandered around this Monastery of Silence for a long time, got lost, got hungry, found your way here now, haven't you? Trust me when I say I don't know where the treasure is. I'd be long gone if I did. But I've had time to look, and I think there is a connection in the turning order of this furnace... I think we can solve the puzzle if we have an item to light. Do you want to give it a try? Tricky part is this, we have to light it within a certain time...
-
-
-
-
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/Minigame.java b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/Minigame.java
deleted file mode 100644
index 0c5846b39c..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Minigame/Minigame.java
+++ /dev/null
@@ -1,530 +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 ai.others.Minigame;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.l2jmobius.gameserver.datatables.SpawnTable;
-import com.l2jmobius.gameserver.enums.ChatType;
-import com.l2jmobius.gameserver.model.L2Object;
-import com.l2jmobius.gameserver.model.L2Spawn;
-import com.l2jmobius.gameserver.model.Location;
-import com.l2jmobius.gameserver.model.actor.L2Npc;
-import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jmobius.gameserver.model.events.EventType;
-import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureSkillFinishCast;
-import com.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
-import com.l2jmobius.gameserver.model.holders.SkillHolder;
-import com.l2jmobius.gameserver.network.NpcStringId;
-import com.l2jmobius.gameserver.util.Util;
-
-import ai.AbstractNpcAI;
-
-/**
- * Monastery Minigame AI.
- * @author nonom
- */
-public final class Minigame extends AbstractNpcAI
-{
- private static final int SUMIEL = 32758;
- private static final int BURNER = 18913;
- private static final int TREASURE_BOX = 18911;
-
- private static final int UNLIT_TORCHLIGHT = 15540;
- private static final int TORCHLIGHT = 15485;
-
- private static final int SKILL_TORCH_LIGHT = 9059;
- private static final SkillHolder TRIGGER_MIRAGE = new SkillHolder(5144, 1);
-
- private static final Location TELEPORT1 = new Location(113187, -85388, -3424, 0);
- private static final Location TELEPORT2 = new Location(118833, -80589, -2688, 0);
-
- private static final int TIMER_INTERVAL = 3;
- private static final int MAX_ATTEMPTS = 3;
-
- private final List _rooms = new ArrayList<>(2);
-
- private Minigame()
- {
- addStartNpc(SUMIEL);
- addFirstTalkId(SUMIEL);
- addTalkId(SUMIEL);
- addSpawnId(SUMIEL, TREASURE_BOX);
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- final MinigameRoom room = getRoomByManager(npc);
- switch (event)
- {
- case "restart":
- {
- final boolean miniGameStarted = room.getStarted();
- if (!miniGameStarted && !hasQuestItems(player, UNLIT_TORCHLIGHT))
- {
- return "32758-05.html";
- }
- else if ((npc.getTarget() != null) && (npc.getTarget() != player))
- {
- return "32758-04.html";
- }
-
- takeItems(player, UNLIT_TORCHLIGHT, 1);
- giveItems(player, TORCHLIGHT, 1);
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.I_LL_START_THE_FURNACE_MECHANISM_WATCH_FOR_THE_PATTERN);
-
- room.getManager().setTarget(player);
- room.setParticipant(player);
- room.setStarted(true);
- for (int i = 0; i < 9; i++)
- {
- room.getOrder()[i] = getRandom(8);
- }
- cancelQuestTimer("hurry_up", npc, null);
- cancelQuestTimer("hurry_up2", npc, null);
- cancelQuestTimer("expire", npc, null);
-
- startQuestTimer("hurry_up", 120000, npc, null);
- startQuestTimer("expire", 190000, npc, null);
- startQuestTimer("start", 1000, npc, null);
- return null;
- }
- case "off":
- {
- if (npc.getId() == BURNER)
- {
- npc.setDisplayEffect(2);
- npc.setIsRunning(false);
- }
- else
- {
- for (L2Npc burner : room.getBurners())
- {
- burner.setDisplayEffect(2);
- burner.setIsRunning(false);
- }
- }
- break;
- }
- case "teleport1":
- {
- player.teleToLocation(TELEPORT1, 0);
- break;
- }
- case "teleport2":
- {
- player.teleToLocation(TELEPORT2, 0);
- break;
- }
- case "start":
- {
- room.burnThemAll();
- startQuestTimer("off", 2000, npc, null); // It should be null to stop burnthemAll 2s after
- startQuestTimer("timer", 4000, npc, null);
- break;
- }
- case "timer":
- {
- if (room.getCurrentPot() < 9)
- {
- final L2Npc b = room.getBurners()[room.getOrder()[room.getCurrentPot()]];
- b.setDisplayEffect(1);
- b.setIsRunning(false);
- startQuestTimer("off", 2000, b, null); // Stopping burning each pot 2s after
- startQuestTimer("timer", TIMER_INTERVAL * 1000, npc, null);
- room.setCurrentPot(room.getCurrentPot() + 1);
- }
- else
- {
- room.getManager().broadcastSay(ChatType.NPC_GENERAL, NpcStringId.NOW_LIGHT_THE_FURNACES_IN_THE_CORRECT_ORDER);
- room.burnThemAll();
- startQuestTimer("off", 2000, npc, null);
- final ConsumerEventListener listener = new ConsumerEventListener(room.getParticipant(), EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast listenerEvent) -> onSkillUse(listenerEvent), room);
- room.getParticipant().addListener(listener);
- room.setCurrentPot(0);
- }
- break;
- }
- case "hurry_up":
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.ONLY_1_MINUTE_LEFT);
- startQuestTimer("hurry_up2", 60000, npc, null);
- break;
- }
- case "hurry_up2":
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.JUST_10_SECONDS_LEFT);
- startQuestTimer("expire", 10000, npc, null);
- break;
- }
- case "expire":
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.TOO_LATE_THE_TORCH_HAS_RUN_OUT_MAYBE_NEXT_TIME);
- }
- case "end":
- {
- cancelQuestTimer("expire", npc, null);
- cancelQuestTimer("hurry_up", npc, null);
- cancelQuestTimer("hurry_up2", npc, null);
- room.getManager().setTarget(null);
- room.setParticipant(null);
- room.setStarted(false);
- room.setAttemptNumber(1);
- room.setCurrentPot(0);
- break;
- }
- case "afterthat":
- {
- npc.deleteMe();
- break;
- }
- }
- return event;
- }
-
- @Override
- public String onFirstTalk(L2Npc npc, L2PcInstance talker)
- {
- String htmltext = null;
- final MinigameRoom room = getRoomByManager(npc);
- final boolean miniGameStarted = room.getStarted();
-
- if (npc.getTarget() == null)
- {
- htmltext = (miniGameStarted ? "32758-08.html" : "32758.html");
- }
- else if (npc.getTarget() == talker)
- {
- if (miniGameStarted)
- {
- htmltext = "32758-07.html";
- }
- else
- {
- final int attemptNumber = room.getAttemptNumber();
-
- if (attemptNumber == 2)
- {
- htmltext = "32758-02.html";
- }
- else if (attemptNumber == 3)
- {
- htmltext = "32758-03.html";
- }
- }
- }
- else
- {
- htmltext = "32758-04.html";
- }
-
- return htmltext;
- }
-
- @Override
- public String onSpawn(L2Npc npc)
- {
- switch (npc.getId())
- {
- case SUMIEL:
- {
- _rooms.add(initRoom(npc));
- break;
- }
- case TREASURE_BOX:
- {
- npc.disableCoreAI(true);
- startQuestTimer("afterthat", 180000, npc, null);
- break;
- }
- }
- return super.onSpawn(npc);
- }
-
- public void onSkillUse(OnCreatureSkillFinishCast event)
- {
- final MinigameRoom room = getRoomByParticipant((L2PcInstance) event.getCaster());
- final boolean miniGameStarted = room.getStarted();
- if (miniGameStarted && (event.getSkill().getId() == SKILL_TORCH_LIGHT))
- {
- final L2Object obj = event.getTarget();
- if ((obj != null) && obj.isNpc())
- {
- final L2Npc npc = (L2Npc) obj;
- if (npc.getId() == BURNER)
- {
- npc.doCast(TRIGGER_MIRAGE.getSkill());
- final int pos = room.getBurnerPos(npc);
- if (pos == room.getOrder()[room.getCurrentPot()])
- {
- if (room.getCurrentPot() < 8)
- {
- npc.setDisplayEffect(1);
- npc.setIsRunning(false);
- startQuestTimer("off", 2000, npc, null);
- room.setCurrentPot(room.getCurrentPot() + 1);
- }
- else
- {
- addSpawn(TREASURE_BOX, room.getParticipant().getLocation(), true, 0);
- room.getManager().broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THAT_S_IT_YOU_VE_DONE_IT);
- room.setCurrentPot(0);
- room.burnThemAll();
- startQuestTimer("off", 2000, room.getManager(), null);
- startQuestTimer("end", 4000, room.getManager(), null);
- }
- }
- else if (room.getAttemptNumber() == MAX_ATTEMPTS)
- {
- room.getManager().broadcastSay(ChatType.NPC_GENERAL, NpcStringId.I_VE_FAILED_ANY_FURTHER_ATTEMPTS_WOULD_BE_WASTEFUL);
- room.burnThemAll();
- startQuestTimer("off", 2000, room.getManager(), null);
- room.getParticipant().removeListenerIf(EventType.ON_CREATURE_SKILL_USE, listener -> listener.getOwner() == room);
- startQuestTimer("end", 4000, room.getManager(), null);
- }
- else if (room.getAttemptNumber() < MAX_ATTEMPTS)
- {
- room.getManager().broadcastSay(ChatType.NPC_GENERAL, NpcStringId.TOO_BAD_I_WILL_NOT_GIVE_UP_ON_THIS_THOUGH);
- room.burnThemAll();
- startQuestTimer("off", 2000, room.getManager(), null);
- room.setAttemptNumber(room.getAttemptNumber() + 1);
- }
- }
- }
- }
- }
-
- /**
- * Create and initialize a MinigameRoom
- * It's loading the nearby pots around the game instructor NPC.
- * TODO: Load the pot_number value from npc ai_params.
- * @param manager the NPC instructor
- * @return MinigameRoom
- */
- private MinigameRoom initRoom(L2Npc manager)
- {
- final L2Npc[] burners = new L2Npc[9];
- L2Npc lastSpawn;
- int potNumber = 0;
-
- for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(BURNER))
- {
- lastSpawn = spawn.getLastSpawn();
- if ((potNumber <= 8) && Util.checkIfInRange(1000, manager, lastSpawn, false))
- {
- lastSpawn.setAutoAttackable(true);
- burners[potNumber++] = lastSpawn;
- }
- }
- return new MinigameRoom(burners, manager);
- }
-
- /**
- * Retrieve a MinigameRoom by game instructor
- * @param manager the NPC instructor
- * @return MinigameRoom
- */
- private MinigameRoom getRoomByManager(L2Npc manager)
- {
- for (MinigameRoom room : _rooms)
- {
- if (room.getManager() == manager)
- {
- return room;
- }
- }
- return null;
- }
-
- /**
- * Retrieve a MinigameRoom by participant
- * @param participant the L2PcInstance participating
- * @return MinigameRoom
- */
- private MinigameRoom getRoomByParticipant(L2PcInstance participant)
- {
- for (MinigameRoom room : _rooms)
- {
- if (room.getParticipant() == participant)
- {
- return room;
- }
- }
- return null;
- }
-
- /**
- * An object that holds the participant, manager, burning order
- * and game status for each secret room into Monastery of Silence.
- */
- private class MinigameRoom
- {
- private final L2Npc[] _burners;
- private final L2Npc _manager;
- private L2PcInstance _participant;
- private boolean _started;
- private int _attemptNumber;
- private int _currentPot;
- private final int _order[];
-
- public MinigameRoom(L2Npc[] burners, L2Npc manager)
- {
- _burners = burners;
- _manager = manager;
- _participant = null;
- _started = false;
- _attemptNumber = 1;
- _currentPot = 0;
- _order = new int[9];
- }
-
- /**
- * Retrieve the burner position into the array
- * @param npc the L2Npc burner
- * @return the array index
- */
- public int getBurnerPos(L2Npc npc)
- {
- for (int i = 0; i < 9; i++)
- {
- if (npc.equals(_burners[i]))
- {
- return i;
- }
- }
- return 0;
- }
-
- /**
- * Burn all the pots into the room
- */
- public void burnThemAll()
- {
- for (L2Npc burner : _burners)
- {
- burner.setDisplayEffect(1);
- burner.setIsRunning(false);
- }
- }
-
- /**
- * Retrieve a list of burners
- * @return An array of L2Npcs
- */
- public L2Npc[] getBurners()
- {
- return _burners;
- }
-
- /**
- * Retrieve the current game manager
- * @return The L2Npc game instructor
- */
- public L2Npc getManager()
- {
- return _manager;
- }
-
- /**
- * Retrieve the current game participant
- * @return The L2PcInstance who is participating
- */
- public L2PcInstance getParticipant()
- {
- return _participant;
- }
-
- /**
- * Set the current participant
- * @param participant The L2PcInstance participating
- */
- public void setParticipant(L2PcInstance participant)
- {
- _participant = participant;
- }
-
- /**
- * Retrieves the MinigameRoom status
- * @return {@code true} if the game is started, {@code false} otherwise
- */
- public boolean getStarted()
- {
- return _started;
- }
-
- /**
- * Set the MinigameRoom status
- * @param started The game status {@code true} if the game is started, {@code false} otherwise
- */
- public void setStarted(boolean started)
- {
- _started = started;
- }
-
- /**
- * Retrieve the current burner position
- * @return The array index
- */
- public int getCurrentPot()
- {
- return _currentPot;
- }
-
- /**
- * Set the current burner position
- * @param pot The position
- */
- public void setCurrentPot(int pot)
- {
- _currentPot = pot;
- }
-
- /**
- * Retrieve the current attempt Number
- * @return The attempt number
- */
- public int getAttemptNumber()
- {
- return _attemptNumber;
- }
-
- /**
- * Set the attempt number
- * @param attempt attempt number
- */
- public void setAttemptNumber(int attempt)
- {
- _attemptNumber = attempt;
- }
-
- /**
- * Retrieve the burning order
- * @return an array of Ids
- */
- public int[] getOrder()
- {
- return _order;
- }
- }
-
- public static void main(String[] args)
- {
- new Minigame();
- }
-}
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/PrisonGuards.java b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/PrisonGuards.java
deleted file mode 100644
index d9c9c55c10..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/PrisonGuards.java
+++ /dev/null
@@ -1,155 +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 ai.others;
-
-import com.l2jmobius.gameserver.enums.ChatType;
-import com.l2jmobius.gameserver.model.L2Object;
-import com.l2jmobius.gameserver.model.actor.L2Attackable;
-import com.l2jmobius.gameserver.model.actor.L2Npc;
-import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jmobius.gameserver.model.holders.SkillHolder;
-import com.l2jmobius.gameserver.model.skills.Skill;
-import com.l2jmobius.gameserver.network.NpcStringId;
-
-import ai.AbstractNpcAI;
-
-/**
- * Prison Guards AI.
- * @author St3eT
- */
-public final class PrisonGuards extends AbstractNpcAI
-{
- // NPCs
- private static final int GUARD_HEAD = 18367; // Prison Guard
- private static final int GUARD = 18368; // Prison Guard
- // Item
- private static final int STAMP = 10013; // Race Stamp
- // Skills
- private static final int TIMER = 5239; // Event Timer
- private static final SkillHolder STONE = new SkillHolder(4578, 1); // Petrification
- private static final SkillHolder SILENCE = new SkillHolder(4098, 9); // Silence
-
- private PrisonGuards()
- {
- addAttackId(GUARD_HEAD, GUARD);
- addSpawnId(GUARD_HEAD, GUARD);
- addNpcHateId(GUARD);
- addSkillSeeId(GUARD);
- addSpellFinishedId(GUARD_HEAD, GUARD);
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (event.equals("CLEAR_STATUS"))
- {
- npc.setScriptValue(0);
- }
- else if (event.equals("CHECK_HOME"))
- {
- if ((npc.calculateDistance(npc.getSpawn().getLocation(), false, false) > 10) && !npc.isInCombat() && !npc.isDead())
- {
- npc.teleToLocation(npc.getSpawn().getLocation());
- }
- startQuestTimer("CHECK_HOME", 30000, npc, null);
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public String onAttack(L2Npc npc, L2PcInstance player, int damage, boolean isSummon)
- {
- if (npc.getId() == GUARD_HEAD)
- {
- if (player.isAffectedBySkill(TIMER))
- {
- if ((getRandom(100) < 10) && (npc.calculateDistance(player, true, false) < 100))
- {
- if ((getQuestItemsCount(player, STAMP) <= 3) && npc.isScriptValue(0))
- {
- giveItems(player, STAMP, 1);
- npc.setScriptValue(1);
- startQuestTimer("CLEAR_STATUS", 600000, npc, null);
- }
- }
- }
- else
- {
- npc.setTarget(player);
- npc.doCast(STONE.getSkill());
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.IT_S_NOT_EASY_TO_OBTAIN);
- }
- }
- else if (!player.isAffectedBySkill(TIMER) && (npc.calculateDistance(npc.getSpawn().getLocation(), false, false) < 2000))
- {
- npc.setTarget(player);
- npc.doCast(STONE.getSkill());
- npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.YOU_RE_OUT_OF_YOUR_MIND_COMING_HERE);
- }
- return super.onAttack(npc, player, damage, isSummon);
- }
-
- @Override
- public String onSkillSee(L2Npc npc, L2PcInstance caster, Skill skill, L2Object[] targets, boolean isSummon)
- {
- if (!caster.isAffectedBySkill(TIMER))
- {
- npc.setTarget(caster);
- npc.doCast(SILENCE.getSkill());
- }
- return super.onSkillSee(npc, caster, skill, targets, isSummon);
- }
-
- @Override
- public String onSpellFinished(L2Npc npc, L2PcInstance player, Skill skill)
- {
- if ((skill == SILENCE.getSkill()) || (skill == STONE.getSkill()))
- {
- ((L2Attackable) npc).clearAggroList();
- npc.setTarget(npc);
- }
- return super.onSpellFinished(npc, player, skill);
- }
-
- @Override
- public boolean onNpcHate(L2Attackable mob, L2PcInstance player, boolean isSummon)
- {
- return player.isAffectedBySkill(TIMER);
- }
-
- @Override
- public String onSpawn(L2Npc npc)
- {
- if (npc.getId() == GUARD_HEAD)
- {
- npc.setIsImmobilized(true);
- npc.setIsInvul(true);
- }
- else
- {
- npc.setRandomWalking(true);
- cancelQuestTimer("CHECK_HOME", npc, null);
- startQuestTimer("CHECK_HOME", 30000, npc, null);
- }
- return super.onSpawn(npc);
- }
-
- public static void main(String[] args)
- {
- new PrisonGuards();
- }
-}
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Scarecrow.java b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Scarecrow.java
deleted file mode 100644
index 82f9916e00..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/Scarecrow.java
+++ /dev/null
@@ -1,52 +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 ai.others;
-
-import com.l2jmobius.gameserver.model.actor.L2Npc;
-
-import ai.AbstractNpcAI;
-
-/**
- * Scarecrow AI.
- * @author ivantotov
- */
-public final class Scarecrow extends AbstractNpcAI
-{
- // NPCs
- private static final int TRAINING_DUMMY = 19546;
- private static final int SCARECROW = 27457;
- private static final int PHYSICAL_PUNCH_MACHINE = 33752;
- private static final int MAGICAL_PUNCH_MACHINE = 33753;
-
- private Scarecrow()
- {
- addSpawnId(TRAINING_DUMMY, SCARECROW, PHYSICAL_PUNCH_MACHINE, MAGICAL_PUNCH_MACHINE);
- }
-
- @Override
- public String onSpawn(L2Npc npc)
- {
- npc.disableCoreAI(true);
- npc.setIsImmobilized(true);
- return super.onSpawn(npc);
- }
-
- public static void main(String[] args)
- {
- new Scarecrow();
- }
-}
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/SupportUnitCaptain.java b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/SupportUnitCaptain.java
deleted file mode 100644
index 544327e66d..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/SupportUnitCaptain.java
+++ /dev/null
@@ -1,282 +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 ai.others.SupportUnitCaptain;
-
-import com.l2jmobius.gameserver.model.ClanPrivilege;
-import com.l2jmobius.gameserver.model.actor.L2Npc;
-import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jmobius.gameserver.network.clientpackets.RequestAcquireSkill;
-
-import ai.AbstractNpcAI;
-
-/**
- * Support Unit Captain AI.
- * @author St3eT
- */
-public final class SupportUnitCaptain extends AbstractNpcAI
-{
- // NPCs
- private static final int[] UNIT_CAPTAIN =
- {
- 35662, // Shanty Fortress
- 35694, // Southern Fortress
- 35731, // Hive Fortress
- 35763, // Valley Fortress
- 35800, // Ivory Fortress
- 35831, // Narsell Fortress
- 35863, // Bayou Fortress
- 35900, // White Sands Fortress
- 35932, // Borderland Fortress
- 35970, // Swamp Fortress
- 36007, // Archaic Fortress
- 36039, // Floran Fortress
- 36077, // Cloud Mountain
- 36114, // Tanor Fortress
- 36145, // Dragonspine Fortress
- 36177, // Antharas's Fortress
- 36215, // Western Fortress
- 36253, // Hunter's Fortress
- 36290, // Aaru Fortress
- 36322, // Demon Fortress
- 36360, // Monastic Fortress
- };
- // Items
- private static final int EPAULETTE = 9912; // Knight's Epaulette
- private static final int RED_MEDITATION = 9931; // Red Talisman of Meditation
- private static final int BLUE_DIV_PROTECTION = 9932; // Blue Talisman - Divine Protection
- private static final int BLUE_EXPLOSION = 10416; // Blue Talisman - Explosion
- private static final int BLUE_M_EXPLOSION = 10417; // Blue Talisman - Magic Explosion
- private static final int RED_MIN_CLARITY = 9917; // Red Talisman of Minimum Clarity
- private static final int RED_MAX_CLARITY = 9918; // Red Talisman of Maximum Clarity
- private static final int RED_MENTAL_REG = 9928; // Red Talisman of Mental Regeneration
- private static final int BLUE_PROTECTION = 9929; // Blue Talisman of Protection
- private static final int BLUE_INVIS = 9920; // Blue Talisman of Invisibility
- private static final int BLUE_DEFENSE = 9916; // Blue Talisman of Defense
- private static final int BLACK_ESCAPE = 9923; // Black Talisman - Escape
- private static final int BLUE_HEALING = 9924; // Blue Talisman of Healing
- private static final int RED_RECOVERY = 9925; // Red Talisman of Recovery
- private static final int BLUE_DEFENSE2 = 9926; // Blue Talisman of Defense
- private static final int BLUE_M_DEFENSE = 9927; // Blue Talisman of Magic Defense
- private static final int RED_LIFE_FORCE = 10518; // Red Talisman - Life Force
- private static final int BLUE_GREAT_HEALING = 10424; // Blue Talisman - Greater Healing
- private static final int WHITE_FIRE = 10421; // White Talisman - Fire
- private static final int[] COMMON_TALISMANS =
- {
- 9914, // Blue Talisman of Power
- 9915, // Blue Talisman of Wild Magic
- 9920, // Blue Talisman of Invisibility
- 9921, // Blue Talisman - Shield Protection
- 9922, // Black Talisman - Mending
- 9933, // Yellow Talisman of Power
- 9934, // Yellow Talisman of Violent Haste
- 9935, // Yellow Talisman of Arcane Defense
- 9936, // Yellow Talisman of Arcane Power
- 9937, // Yellow Talisman of Arcane Haste
- 9938, // Yellow Talisman of Accuracy
- 9939, // Yellow Talisman of Defense
- 9940, // Yellow Talisman of Alacrity
- 9941, // Yellow Talisman of Speed
- 9942, // Yellow Talisman of Critical Reduction
- 9943, // Yellow Talisman of Critical Damage
- 9944, // Yellow Talisman of Critical Dodging
- 9945, // Yellow Talisman of Evasion
- 9946, // Yellow Talisman of Healing
- 9947, // Yellow Talisman of CP Regeneration
- 9948, // Yellow Talisman of Physical Regeneration
- 9949, // Yellow Talisman of Mental Regeneration
- 9950, // Grey Talisman of Weight Training
- 9952, // Orange Talisman - Hot Springs CP Potion
- 9953, // Orange Talisman - Elixir of Life
- 9954, // Orange Talisman - Elixir of Mental Strength
- 9955, // Black Talisman - Vocalization
- 9956, // Black Talisman - Arcane Freedom
- 9957, // Black Talisman - Physical Freedom
- 9958, // Black Talisman - Rescue
- 9959, // Black Talisman - Free Speech
- 9960, // White Talisman of Bravery
- 9961, // White Talisman of Motion
- 9962, // White Talisman of Grounding
- 9963, // White Talisman of Attention
- 9964, // White Talisman of Bandages
- 9965, // White Talisman of Protection
- 10418, // White Talisman - Storm
- 10420, // White Talisman - Water
- 10519, // White Talisman - Earth
- 10422, // White Talisman - Light
- 10423, // Blue Talisman - Self-Destruction
- };
-
- private SupportUnitCaptain()
- {
- addStartNpc(UNIT_CAPTAIN);
- addTalkId(UNIT_CAPTAIN);
- addFirstTalkId(UNIT_CAPTAIN);
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- final int fortOwner = npc.getFort().getOwnerClan() == null ? 0 : npc.getFort().getOwnerClan().getId();
- if ((player.getClan() == null) || (player.getClanId() != fortOwner))
- {
- return "unitcaptain-04.html";
- }
-
- String htmltext = null;
- int itemId = 0;
- switch (event)
- {
- case "unitcaptain.html":
- case "unitcaptain-01.html":
- {
- htmltext = event;
- break;
- }
- case "giveTalisman":
- {
- if (getQuestItemsCount(player, EPAULETTE) < 10)
- {
- htmltext = "unitcaptain-05.html";
- break;
- }
-
- final int categoryChance = getRandom(100);
- if (categoryChance <= 5)
- {
- final int chance = getRandom(100);
- if (chance <= 25)
- {
- itemId = RED_MEDITATION;
- }
- else if (chance <= 50)
- {
- itemId = BLUE_DIV_PROTECTION;
- }
- else if (chance <= 75)
- {
- itemId = BLUE_EXPLOSION;
- }
- else
- {
- itemId = BLUE_M_EXPLOSION;
- }
- }
- else if (categoryChance <= 15)
- {
- final int chance = getRandom(100);
- if (chance <= 20)
- {
- itemId = RED_MIN_CLARITY;
- }
- else if (chance <= 40)
- {
- itemId = RED_MAX_CLARITY;
- }
- else if (chance <= 60)
- {
- itemId = RED_MENTAL_REG;
- }
- else if (chance <= 80)
- {
- itemId = BLUE_PROTECTION;
- }
- else
- {
- itemId = BLUE_INVIS;
- }
- }
- else if (categoryChance <= 30)
- {
- final int chance = getRandom(100);
- if (chance <= 12)
- {
- itemId = BLUE_DEFENSE;
- }
- else if (chance <= 25)
- {
- itemId = BLACK_ESCAPE;
- }
- else if (chance <= 37)
- {
- itemId = BLUE_HEALING;
- }
- else if (chance <= 50)
- {
- itemId = RED_RECOVERY;
- }
- else if (chance <= 62)
- {
- itemId = BLUE_DEFENSE2;
- }
- else if (chance <= 75)
- {
- itemId = BLUE_M_DEFENSE;
- }
- else if (chance <= 87)
- {
- itemId = RED_LIFE_FORCE;
- }
- else
- {
- itemId = BLUE_GREAT_HEALING;
- }
- }
- else
- {
- final int chance = getRandom(46);
- if (chance <= 41)
- {
- itemId = COMMON_TALISMANS[chance];
- }
- else
- {
- itemId = WHITE_FIRE;
- }
- }
- takeItems(player, EPAULETTE, 10);
- giveItems(player, itemId, 1);
- htmltext = "unitcaptain-02.html";
- break;
- }
- case "squadSkill":
- {
- if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME))
- {
- RequestAcquireSkill.showSubUnitSkillList(player);
- }
- else
- {
- htmltext = "unitcaptain-03.html";
- }
- break;
- }
- }
- return htmltext;
- }
-
- @Override
- public String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- final int fortOwner = npc.getFort().getOwnerClan() == null ? 0 : npc.getFort().getOwnerClan().getId();
- return ((player.getClan() != null) && (player.getClanId() == fortOwner)) ? "unitcaptain.html" : "unitcaptain-04.html";
- }
-
- public static void main(String[] args)
- {
- new SupportUnitCaptain();
- }
-}
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-01.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-01.html
deleted file mode 100644
index 856df97e3d..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-01.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-The Talisman is both magical and mysterious. Once applied to your bracelet, you will be able to see its surprising effect for yourself. Before I can give it to you, however, you must prove to me that you are capable of responsibly wielding such power. Give me 10 Knight's Epaulettes and I will provide you the Talisman.
-
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-02.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-02.html
deleted file mode 100644
index a94976a0f0..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-02.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-Very well. Here you go!
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-03.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-03.html
deleted file mode 100644
index e5c1e59e18..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-03.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-If you cannot prove your worthiness, I cannot give it to you. Please leave!
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-04.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-04.html
deleted file mode 100644
index 68a68fb6da..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-04.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-Can't you see that I am busy? Continue to bother me and you'll finish your days as a toad in the castle pond!
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-05.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-05.html
deleted file mode 100644
index 178f473862..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain-05.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
-You do not have enough Knight's Epaulettes.
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain.html b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain.html
deleted file mode 100644
index 138a9e0505..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/SupportUnitCaptain/unitcaptain.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-Magic is intertwined with the very fabric of our world, affecting not only large-scale events like wars but also the mundane tasks of daily life.
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/WarriorFishingBlock.java b/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/WarriorFishingBlock.java
deleted file mode 100644
index 38a8fad143..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/ai/others/WarriorFishingBlock.java
+++ /dev/null
@@ -1,139 +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 ai.others;
-
-import com.l2jmobius.gameserver.ai.CtrlEvent;
-import com.l2jmobius.gameserver.enums.ChatType;
-import com.l2jmobius.gameserver.model.L2Object;
-import com.l2jmobius.gameserver.model.actor.L2Attackable;
-import com.l2jmobius.gameserver.model.actor.L2Npc;
-import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jmobius.gameserver.network.NpcStringId;
-
-import ai.AbstractNpcAI;
-
-/**
- * Warrior Fishing Block AI.
- * @author Zoey76
- */
-public final class WarriorFishingBlock extends AbstractNpcAI
-{
- // Monsters
- private static final int[] MONSTERS =
- {
- 18319, // Caught Frog
- 18320, // Caught Undine
- 18321, // Caught Rakul
- 18322, // Caught Sea Giant
- 18323, // Caught Sea Horse Soldier
- 18324, // Caught Homunculus
- 18325, // Caught Flava
- 18326, // Caught Gigantic Eye
- };
- // NPC Strings
- private static final NpcStringId[] NPC_STRINGS_ON_SPAWN =
- {
- NpcStringId.CROAK_CROAK_FOOD_LIKE_S1_IN_THIS_PLACE,
- NpcStringId.S1_HOW_LUCKY_I_AM,
- NpcStringId.PRAY_THAT_YOU_CAUGHT_A_WRONG_FISH_S1
- };
- private static final NpcStringId[] NPC_STRINGS_ON_ATTACK =
- {
- NpcStringId.DO_YOU_KNOW_WHAT_A_FROG_TASTES_LIKE,
- NpcStringId.I_WILL_SHOW_YOU_THE_POWER_OF_A_FROG,
- NpcStringId.I_WILL_SWALLOW_AT_A_MOUTHFUL
- };
- private static final NpcStringId[] NPC_STRINGS_ON_KILL =
- {
- NpcStringId.UGH_NO_CHANCE_HOW_COULD_THIS_ELDER_PASS_AWAY_LIKE_THIS,
- NpcStringId.CROAK_CROAK_A_FROG_IS_DYING,
- NpcStringId.A_FROG_TASTES_BAD_YUCK
- };
- // Misc
- private static final int CHANCE_TO_SHOUT_ON_ATTACK = 33;
- private static final int DESPAWN_TIME = 50; // 50 seconds to despawn
-
- public WarriorFishingBlock()
- {
- addAttackId(MONSTERS);
- addKillId(MONSTERS);
- addSpawnId(MONSTERS);
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- switch (event)
- {
- case "SPAWN":
- {
- final L2Object obj = npc.getTarget();
- if ((obj == null) || !obj.isPlayer())
- {
- npc.decayMe();
- }
- else
- {
- final L2PcInstance target = obj.getActingPlayer();
- npc.broadcastSay(ChatType.NPC_GENERAL, NPC_STRINGS_ON_SPAWN[getRandom(NPC_STRINGS_ON_SPAWN.length)], target.getName());
- ((L2Attackable) npc).addDamageHate(target, 0, 2000);
- npc.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, target);
- npc.addAttackerToAttackByList(target);
-
- startQuestTimer("DESPAWN", DESPAWN_TIME * 1000, npc, target);
- }
- break;
- }
- case "DESPAWN":
- {
- npc.decayMe();
- break;
- }
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
- {
- if (getRandom(100) < CHANCE_TO_SHOUT_ON_ATTACK)
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NPC_STRINGS_ON_ATTACK[getRandom(NPC_STRINGS_ON_ATTACK.length)]);
- }
- return super.onAttack(npc, attacker, damage, isSummon);
- }
-
- @Override
- public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
- {
- npc.broadcastSay(ChatType.NPC_GENERAL, NPC_STRINGS_ON_KILL[getRandom(NPC_STRINGS_ON_KILL.length)]);
- cancelQuestTimer("DESPAWN", npc, killer);
- return super.onKill(npc, killer, isSummon);
- }
-
- @Override
- public String onSpawn(L2Npc npc)
- {
- startQuestTimer("SPAWN", 2000, npc, null);
- return super.onSpawn(npc);
- }
-
- public static void main(String[] args)
- {
- new WarriorFishingBlock();
- }
-}
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/ShadowWeapons.java b/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/ShadowWeapons.java
deleted file mode 100644
index e1a9c319cf..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/ShadowWeapons.java
+++ /dev/null
@@ -1,84 +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 custom.ShadowWeapons;
-
-import com.l2jmobius.gameserver.model.actor.L2Npc;
-import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
-
-import ai.AbstractNpcAI;
-
-/**
- * Shadow Weapons AI.
- * @author Nyaran, jurchiks
- */
-public final class ShadowWeapons extends AbstractNpcAI
-{
- // @formatter:off
- private static final int[] NPCS =
- {
- 30037, 30066, 30070, 30109, 30115, 30120, 30174, 30175, 30176, 30187,
- 30191, 30195, 30288, 30289, 30290, 30297, 30373, 30462, 30474, 30498,
- 30499, 30500, 30503, 30504, 30505, 30511, 30512, 30513, 30595, 30676,
- 30677, 30681, 30685, 30687, 30689, 30694, 30699, 30704, 30845, 30847,
- 30849, 30854, 30857, 30862, 30865, 30894, 30897, 30900, 30905, 30910,
- 30913, 31269, 31272, 31276, 31285, 31288, 31314, 31317, 31321, 31324,
- 31326, 31328, 31331, 31334, 31336, 31958, 31961, 31965, 31968, 31974,
- 31977, 31996, 32092, 32093, 32094, 32095, 32096, 32097, 32098, 32193,
- 32196, 32199, 32202, 32205, 32206, 32213, 32214, 32221, 32222, 32229,
- 32230, 32233, 32234
- };
- // @formatter:on
- private ShadowWeapons()
- {
- addStartNpc(NPCS);
- addTalkId(NPCS);
- }
-
- @Override
- public String onTalk(L2Npc npc, L2PcInstance player)
- {
- String htmltext;
- final boolean has_d = hasQuestItems(player, 8869); // Shadow Item Exchange Coupon (D-Grade)
- final boolean has_c = hasQuestItems(player, 8870); // Shadow Item Exchange Coupon (C-Grade)
-
- if (has_d || has_c)
- {
- if (!has_d)
- {
- htmltext = "exchange_c.html";
- }
- else if (!has_c)
- {
- htmltext = "exchange_d.html";
- }
- else
- {
- htmltext = "exchange_both.html";
- }
- }
- else
- {
- htmltext = "exchange_no.html";
- }
- return htmltext;
- }
-
- public static void main(String args[])
- {
- new ShadowWeapons();
- }
-}
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/exchange_both.html b/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/exchange_both.html
deleted file mode 100644
index e20701d09e..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/exchange_both.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-A Shadow weapon is a special weapon that is made in cooperation between the Ivory Tower and the Black Anvil Guild. It is created by magically projecting the power of a weapon onto another catalytic object. While that means that it can only be used while the magic charge remains, it has made it possible to mass produce projectile weapons.
-Its performance is no different than if you used the original weapon, except that it cannot possess the special ability to absorb souls or refine through a Stone of Life. Also, although it acts as a weapon, it is actualy in the magic category -- once opened, it cannot be passed on to someone else. Consider it an aid on your new path until you lay your hands on some real weapons.
-If you have a Shadow Weapon exchange coupon, you can receive a Shadow Weapon right for you.
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/exchange_c.html b/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/exchange_c.html
deleted file mode 100644
index 1b98f60796..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/exchange_c.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-A Shadow weapon is a special weapon that is made in cooperation between the Ivory Tower and the Black Anvil Guild. It is created by magically projecting the power of a weapon onto another catalytic object. While that means that it can only be used while the magic charge remains, it has made it possible to mass produce projectile weapons.
-Its performance is no different than if you used the original weapon, except that it cannot possess the special ability to absorb souls or refine through a Stone of Life. Also, although it acts as a weapon, it is actualy in the magic category -- once opened, it cannot be passed on to someone else. Consider it an aid on your new path until you lay your hands on some real weapons.
-If you have a Shadow Weapon exchange coupon, you can receive a Shadow Weapon right for you.
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/exchange_d.html b/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/exchange_d.html
deleted file mode 100644
index 5e55959527..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/exchange_d.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-A Shadow weapon is a special weapon that is made in cooperation between the Ivory Tower and the Black Anvil Guild. It is created by magically projecting the power of a weapon onto another catalytic object. While that means that it can only be used while the magic charge remains, it has made it possible to mass produce projectile weapons.
-Its performance is no different than if you used the original weapon, except that it cannot possess the special ability to absorb souls or refine through a Stone of Life. Also, although it acts as a weapon, it is actualy in the magic category -- once opened, it cannot be passed on to someone else. Consider it an aid on your new path until you lay your hands on some real weapons.
-If you have a Shadow Weapon exchange coupon, you can receive a Shadow Weapon right for you.
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/exchange_no.html b/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/exchange_no.html
deleted file mode 100644
index e665790927..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/custom/ShadowWeapons/exchange_no.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
-You don't have a Shadow weapon exchange coupon.
-A shadow Weapon exchange coupon is a gift received from a Grand Master, Magister or High Priest when you complete a class transfer.
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/32600-no.htm b/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/32600-no.htm
deleted file mode 100644
index b3b10ca6eb..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/32600-no.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Alegria:
-Oh really?!
-Well, I'm already taken. But I'm flattered that you would think so highly of me.
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/32600-nohat.htm b/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/32600-nohat.htm
deleted file mode 100644
index 6ee1ab73dd..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/32600-nohat.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Alegria:
-Oh, no! You don't have the hat with you.
-You should've checked to see if the Explorer Hat (event) was in your inventory! Can't exchange if you don't have it!
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/32600-yes.htm b/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/32600-yes.htm
deleted file mode 100644
index 4a3df2934e..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/32600-yes.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-Alegria:
-Once you exchange your Explorer Hat, you will not be able to receive it again. Are you ok with that?
-Your Birthday Hat is so pretty, which is why I'm worried that this might be a mistake on your part.
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/CharacterBirthday.java b/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/CharacterBirthday.java
deleted file mode 100644
index 3b6d2221ef..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/CharacterBirthday.java
+++ /dev/null
@@ -1,122 +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 events.CharacterBirthday;
-
-import com.l2jmobius.gameserver.model.actor.L2Npc;
-import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jmobius.gameserver.util.Util;
-
-import ai.AbstractNpcAI;
-
-/**
- * Character Birthday event AI.
- * Updated to H5 by Nyaran.
- * @author Gnacik
- */
-public final class CharacterBirthday extends AbstractNpcAI
-{
- private static final int ALEGRIA = 32600;
- private static int SPAWNS = 0;
-
- private static final int[] GK =
- {
- 30006,
- 30059,
- 30080,
- 30134,
- 30146,
- 30177,
- 30233,
- 30256,
- 30320,
- 30540,
- 30576,
- 30836,
- 30848,
- 30878,
- 30899,
- 31275,
- 31320,
- 31964,
- 32163
- };
-
- private CharacterBirthday()
- {
- addStartNpc(ALEGRIA);
- addStartNpc(GK);
- addTalkId(ALEGRIA);
- addTalkId(GK);
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- String htmltext = event;
- if (event.equalsIgnoreCase("despawn_npc"))
- {
- npc.doDie(player);
- SPAWNS--;
-
- htmltext = null;
- }
- else if (event.equalsIgnoreCase("change"))
- {
- // Change Hat
- if (hasQuestItems(player, 10250))
- {
- takeItems(player, 10250, 1); // Adventurer Hat (Event)
- giveItems(player, 21594, 1); // Birthday Hat
- htmltext = null; // FIXME: Probably has html
- // Despawn npc
- npc.doDie(player);
- SPAWNS--;
- }
- else
- {
- htmltext = "32600-nohat.htm";
- }
- }
- return htmltext;
- }
-
- @Override
- public String onTalk(L2Npc npc, L2PcInstance player)
- {
- if (SPAWNS >= 3)
- {
- return "busy.htm";
- }
-
- if (!Util.checkIfInRange(10, npc, player, true))
- {
- final L2Npc spawned = addSpawn(32600, player.getX() + 10, player.getY() + 10, player.getZ() + 10, 0, false, 0, true);
- startQuestTimer("despawn_npc", 180000, spawned, player);
- SPAWNS++;
- }
- else
- {
- return "tooclose.htm";
- }
- return null;
- }
-
- public static void main(String[] args)
- {
- new CharacterBirthday();
- }
-}
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/busy.htm b/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/busy.htm
deleted file mode 100644
index 51ed4e2d45..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/busy.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-
-Alegria is very busy now. Try again later.
-
\ No newline at end of file
diff --git a/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/tooclose.htm b/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/tooclose.htm
deleted file mode 100644
index d0dbdfeb60..0000000000
--- a/L2J_Mobius_Classic/dist/game/data/scripts/events/CharacterBirthday/tooclose.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Gatekeeper:
-Alegria, the Creation Day Helper, cannot be summoned as you are too close.
-Please move back a little bit and try again.
-
\ No newline at end of file