diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/html/admin/reload.htm b/L2J_Mobius_1.0_Ertheia/dist/game/data/html/admin/reload.htm index 0642015dff..27aeb51dcc 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/html/admin/reload.htm +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/html/admin/reload.htm @@ -49,7 +49,7 @@ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/html/teleporter/34047-1.htm b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/html/teleporter/34047-1.htm index 68c304bf0c..76438a02f9 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/html/teleporter/34047-1.htm +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/html/teleporter/34047-1.htm @@ -4,5 +4,5 @@ I went to study one place where the energy of the fire was very strong. At that And you know, it's very strange, but in the same place I saw Ice Queen Freya. What could Freya do where the energy of fire pulsates? King Ignis has not yet declared himself openly, but is hiding and accumulating strength. Perhaps, when he leaves the shelter, Aden will plunge into chaos. Therefore, it is necessary in whatever would prevent Ignis.
But first you need to get a force that will help withstand the energy of fire. Collect loyal supporters and come back !!! Alone you can not cope.
(You need a command channel of 27 or more characters.). - + \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstanceZone.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstanceZone.java index 56deec9bcb..abf484a8c5 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstanceZone.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstanceZone.java @@ -54,7 +54,7 @@ public class AdminInstanceZone implements IAdminCommandHandler InstanceManager.getInstance().deleteInstanceTime(player, instanceId); BuilderUtil.sendSysMessage(activeChar, "Instance zone " + name + " cleared for player " + player.getName()); player.sendMessage("Admin cleared instance zone " + name + " for you"); - + display(activeChar, activeChar); // for refreshing instance window return true; } catch (Exception e) diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminReload.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminReload.java index cf779c1f1f..dbcf3c4939 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminReload.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminReload.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.handler.IAdminCommandHandler; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.FakePlayerChatManager; +import org.l2jmobius.gameserver.instancemanager.InstanceManager; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; @@ -339,6 +340,12 @@ public class AdminReload implements IAdminCommandHandler AdminData.getInstance().broadcastMessageToGMs(activeChar.getName() + ": Reloaded Localisation data."); break; } + case "instance": + { + InstanceManager.getInstance().load(); + AdminData.getInstance().broadcastMessageToGMs(activeChar.getName() + ": Reloaded Instances data."); + break; + } default: { activeChar.sendMessage(RELOAD_USAGE); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/instances/ResidenceOfIgnis/ResidenceOfQueenIgnis.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/instances/ResidenceOfIgnis/ResidenceOfQueenIgnis.java new file mode 100644 index 0000000000..face55cb40 --- /dev/null +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/instances/ResidenceOfIgnis/ResidenceOfQueenIgnis.java @@ -0,0 +1,279 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package instances.ResidenceOfIgnis; + +import org.l2jmobius.gameserver.enums.ChatType; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.SkillHolder; +import org.l2jmobius.gameserver.model.instancezone.Instance; +import org.l2jmobius.gameserver.model.skills.Skill; +import org.l2jmobius.gameserver.model.skills.SkillCaster; + +import instances.AbstractInstance; + +/** + * @author RobikBobik + * @NOTE: Retail like working - I get informations from wiki and youtube video. + * @TODO: Maybe rewrite code to modern style. + * @TODO: Check skill 50050 - working, but I dont know if is correct. + * @TODO: Ignis other skills - skills are implemented, but I dont know if is correct. + */ +public class ResidenceOfQueenIgnis extends AbstractInstance +{ + // NPCs + private static final int TARA = 34047; + private static final int FREYA = 29109; + + // RAID + private static final int IGNIS = 29105; + + // SKILLS + private static SkillHolder FIRE_RAG_1 = new SkillHolder(50050, 1); + private static SkillHolder FIRE_RAG_2 = new SkillHolder(50050, 2); + private static SkillHolder FIRE_RAG_3 = new SkillHolder(50050, 3); + private static SkillHolder FIRE_RAG_4 = new SkillHolder(50050, 4); + private static SkillHolder FIRE_RAG_5 = new SkillHolder(50050, 5); + private static SkillHolder FIRE_RAG_6 = new SkillHolder(50050, 6); + private static SkillHolder FIRE_RAG_7 = new SkillHolder(50050, 7); + private static SkillHolder FIRE_RAG_8 = new SkillHolder(50050, 8); + private static SkillHolder FIRE_RAG_9 = new SkillHolder(50050, 9); + private static SkillHolder FIRE_RAG_10 = new SkillHolder(50050, 10); + + private static SkillHolder FREYA_SAFETY_ZONE = new SkillHolder(50052, 1); // Just for an effect + // Misc + private static final int TEMPLATE_ID = 195; + + public ResidenceOfQueenIgnis() + { + super(TEMPLATE_ID); + addStartNpc(TARA); + addTalkId(FREYA); + addKillId(IGNIS); + addAttackId(IGNIS); + addInstanceLeaveId(TEMPLATE_ID); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + switch (event) + { + case "ENTER": + { + enterInstance(player, npc, TEMPLATE_ID); + player.getVariables().set("REMOVE_FIRE_RAGE", 0); + break; + } + case "REMOVE_FIRE_RAGE": + { + if (player.isAffectedBySkill(50050)) + { + if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 0) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 1); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 1) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 2); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 2) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 3); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 3) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 4); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 4) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 5); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 5) + { + npc.broadcastSay(ChatType.NPC_SHOUT, "You cannot use my power again."); + player.sendMessage("Freya: You cannot use my power again."); + } + } + else + { + npc.broadcastSay(ChatType.NPC_SHOUT, "I help you only when you affected by Fire Rage skill."); + } + break; + } + case "CAST_FIRE_RAGE_1": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_1.getSkill())) + { + npc.doCast(FIRE_RAG_1.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_2": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_2.getSkill())) + { + npc.doCast(FIRE_RAG_2.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_3": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_3.getSkill())) + { + npc.doCast(FIRE_RAG_3.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_4": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_4.getSkill())) + { + npc.doCast(FIRE_RAG_4.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_5": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_5.getSkill())) + { + npc.doCast(FIRE_RAG_5.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_6": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_6.getSkill())) + { + npc.doCast(FIRE_RAG_6.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_7": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_7.getSkill())) + { + npc.doCast(FIRE_RAG_7.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_8": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_8.getSkill())) + { + npc.doCast(FIRE_RAG_8.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_9": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_9.getSkill())) + { + npc.doCast(FIRE_RAG_9.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_10": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_10.getSkill())) + { + npc.doCast(FIRE_RAG_10.getSkill()); + } + break; + } + + } + return null; + } + + @Override + public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon, Skill skill) + { + if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.99)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.70))) + { + startQuestTimer("CAST_FIRE_RAGE_1", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.70)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.50))) + { + startQuestTimer("CAST_FIRE_RAGE_2", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.50)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.40))) + { + startQuestTimer("CAST_FIRE_RAGE_3", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.40)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.25))) + { + startQuestTimer("CAST_FIRE_RAGE_4", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.25)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.15))) + { + startQuestTimer("CAST_FIRE_RAGE_5", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.15)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.10))) + { + startQuestTimer("CAST_FIRE_RAGE_6", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.10)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.7))) + { + startQuestTimer("CAST_FIRE_RAGE_7", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.7)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.5))) + { + startQuestTimer("CAST_FIRE_RAGE_8", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.5)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.3))) + { + startQuestTimer("CAST_FIRE_RAGE_9", 1000, npc, null); + } + else if (npc.getCurrentHp() < (npc.getMaxHp() * 0.3)) + { + startQuestTimer("CAST_FIRE_RAGE_10", 1000, npc, null); + } + return super.onAttack(npc, attacker, damage, isSummon, skill); + } + + @Override + public String onKill(Npc npc, PlayerInstance player, boolean isSummon) + { + final Instance world = npc.getInstanceWorld(); + if (world != null) + { + world.finishInstance(); + } + return super.onKill(npc, player, isSummon); + } + + public static void main(String[] args) + { + new ResidenceOfQueenIgnis(); + } +} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/29000-29099.xml b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/29000-29099.xml index b5c7faac9f..1a89fcea32 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/29000-29099.xml +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/29000-29099.xml @@ -243,12 +243,21 @@ - + + + + + + + + + + diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/npcs/29100-29199.xml b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/npcs/29100-29199.xml index 653e35e3c7..b088ed39bc 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/npcs/29100-29199.xml +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/npcs/29100-29199.xml @@ -109,7 +109,7 @@ - + ELEMENTAL MALE @@ -131,6 +131,8 @@ + + diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/skills/50000-50099.xml b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/skills/50000-50099.xml index ab0b0d3171..51dd8df177 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/skills/50000-50099.xml +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/skills/50000-50099.xml @@ -38,6 +38,7 @@ A1 40 2000 + 30000 -100 @@ -439,11 +440,94 @@ icon.skill50050_9 icon.skill50050_10 - A1 + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + + -1 + BLEEDING + BLEEDING + DOT_BLEEDING + 100 + PHYSICAL + 40 + 720 + + -574 + -582 + -590 + -597 + -604 + -611 + -617 + -624 + -630 + -635 + + 1000 + 4000 + + 505 + 514 + 522 + 531 + 540 + 548 + 557 + 565 + 573 + 581 + true - 1500 - 500 - -100 + 1 + 20 + + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + + A2 + 180000 + 5 + ENEMY + RANGE + NOT_FRIEND + + + + 25 + 34 + 44 + 54 + 62 + 67 + 72 + 77 + 83 + 90 + + 5 + + + -20 + PER + + @@ -471,6 +555,13 @@ 1800 500 -100 + + + + 30000 + + + @@ -505,6 +596,13 @@ 3000 500 -100 + + + + 10000 + + + @@ -512,6 +610,13 @@ 4000 500 -100 + + + + 10000 + + + @@ -588,22 +693,53 @@ -100 - + 150 + 600 + -1 + 1100 + FIRE + 180 + 4000 + 2 + 99 A1 - 1 - 1500 - 500 - 5000 - -100 + 15000 + TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT + -5 + ENEMY + RANGE + NOT_FRIEND + + + 250 + + - - A1 + 6-12 + 200 + -338 + FIRE + 150 + 4000 + icon.skill50070 1 - 2000 - 500 - 5000 - -100 + 82 + 125 + 21 + A1 + 8000 + 5 + SELF + POINT_BLANK + NOT_FRIEND + + + + 138 + + + diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/skills/55700-55799.xml b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/skills/55700-55799.xml index 327d3d5f07..a55faa1553 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/skills/55700-55799.xml +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/skills/55700-55799.xml @@ -3,9 +3,26 @@ icon.skill0274 - A1 + 4 + 600 + CRITICAL_DMG_UP + 1 + 29014 2500 3000 + 2 + 1 + A2 + NONE + 5 + SELF + SINGLE + + + 35 + PER + + @@ -86,6 +103,7 @@ icon.etc_bm_brooch_lavianrose_i03 A1 + 4 AVE_BROOCH AVE_BROOCH @@ -102,11 +120,22 @@ icon.etc_bm_brooch_lavianrose_i03 P + + + 4 + + icon.etc_bm_brooch_lavianrose_i03 P + + + 12 + INVENTORY_NORMAL + + icon.card_event_blue_box @@ -259,41 +288,266 @@ BranchIcon.icon.g_bm_elmoreden_cloak_normal P + + + 0.1 + PER + + + 0.1 + PER + + BranchIcon.icon.g_bm_elmoreden_cloak_normal P + + + + 0.3 + 0.5 + 0.8 + 1 + 1.3 + 1.5 + 1.8 + 2 + 2.3 + 2.5 + 2.8 + 3 + 3.3 + 3.5 + 3.8 + 4 + 4.3 + 4.5 + 4.8 + 5 + + PER + + + + 0.3 + 0.5 + 0.8 + 1 + 1.3 + 1.5 + 1.8 + 2 + 2.3 + 2.5 + 2.8 + 3 + 3.3 + 3.5 + 3.8 + 4 + 4.3 + 4.5 + 4.8 + 5 + + PER + + BranchIcon.icon.g_bm_aden_cloak_normal P + + + 0.1 + PER + + BranchIcon.icon.g_bm_aden_cloak_normal P + + + + 0.3 + 0.5 + 0.8 + 1 + 1.3 + 1.5 + 1.8 + 2 + 2.3 + 2.5 + 2.8 + 3 + 3.3 + 3.5 + 3.8 + 4 + 4.3 + 4.5 + 4.8 + 5 + + PER + + BranchIcon.icon.g_bm_elmore_cloak_normal P + + + 0.1 + PER + + + 0.1 + PER + + BranchIcon.icon.g_bm_elmore_cloak_normal P + + + + 0.3 + 0.5 + 0.8 + 1 + 1.3 + 1.5 + 1.8 + 2 + 2.3 + 2.5 + 2.8 + 3 + 3.3 + 3.5 + 3.8 + 4 + 4.3 + 4.5 + 4.8 + 5 + + PER + + + + 0.3 + 0.5 + 0.8 + 1 + 1.3 + 1.5 + 1.8 + 2 + 2.3 + 2.5 + 2.8 + 3 + 3.3 + 3.5 + 3.8 + 4 + 4.3 + 4.5 + 4.8 + 5 + + PER + + BranchIcon.icon.g_bm_perios_cloak_normal P + 5 + + + -0.5 + PK + DIFF + + + -0.5 + ENEMY_ALL + DIFF + + BranchIcon.icon.g_bm_perios_cloak_normal P + 5 + + + + -1 + -2 + -3 + -4 + -5 + -6 + -7 + -8 + -9 + -10 + -11 + -12 + -13 + -14 + -15 + -16 + -17 + -18 + -19 + -20 + + PK + DIFF + + + + -1 + -2 + -3 + -4 + -5 + -6 + -7 + -8 + -9 + -10 + -11 + -12 + -13 + -14 + -15 + -16 + -17 + -18 + -19 + -20 + + ENEMY_ALL + DIFF + + diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/html/admin/reload.htm b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/html/admin/reload.htm index 0642015dff..27aeb51dcc 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/html/admin/reload.htm +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/html/admin/reload.htm @@ -49,7 +49,7 @@ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/html/teleporter/34047-1.htm b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/html/teleporter/34047-1.htm index 68c304bf0c..76438a02f9 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/html/teleporter/34047-1.htm +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/html/teleporter/34047-1.htm @@ -4,5 +4,5 @@ I went to study one place where the energy of the fire was very strong. At that And you know, it's very strange, but in the same place I saw Ice Queen Freya. What could Freya do where the energy of fire pulsates? King Ignis has not yet declared himself openly, but is hiding and accumulating strength. Perhaps, when he leaves the shelter, Aden will plunge into chaos. Therefore, it is necessary in whatever would prevent Ignis.
But first you need to get a force that will help withstand the energy of fire. Collect loyal supporters and come back !!! Alone you can not cope.
(You need a command channel of 27 or more characters.). - + \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstanceZone.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstanceZone.java index 56deec9bcb..abf484a8c5 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstanceZone.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstanceZone.java @@ -54,7 +54,7 @@ public class AdminInstanceZone implements IAdminCommandHandler InstanceManager.getInstance().deleteInstanceTime(player, instanceId); BuilderUtil.sendSysMessage(activeChar, "Instance zone " + name + " cleared for player " + player.getName()); player.sendMessage("Admin cleared instance zone " + name + " for you"); - + display(activeChar, activeChar); // for refreshing instance window return true; } catch (Exception e) diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminReload.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminReload.java index cf779c1f1f..dbcf3c4939 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminReload.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminReload.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.handler.IAdminCommandHandler; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.FakePlayerChatManager; +import org.l2jmobius.gameserver.instancemanager.InstanceManager; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; @@ -339,6 +340,12 @@ public class AdminReload implements IAdminCommandHandler AdminData.getInstance().broadcastMessageToGMs(activeChar.getName() + ": Reloaded Localisation data."); break; } + case "instance": + { + InstanceManager.getInstance().load(); + AdminData.getInstance().broadcastMessageToGMs(activeChar.getName() + ": Reloaded Instances data."); + break; + } default: { activeChar.sendMessage(RELOAD_USAGE); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/instances/ResidenceOfIgnis/ResidenceOfQueenIgnis.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/instances/ResidenceOfIgnis/ResidenceOfQueenIgnis.java new file mode 100644 index 0000000000..face55cb40 --- /dev/null +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/instances/ResidenceOfIgnis/ResidenceOfQueenIgnis.java @@ -0,0 +1,279 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package instances.ResidenceOfIgnis; + +import org.l2jmobius.gameserver.enums.ChatType; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.SkillHolder; +import org.l2jmobius.gameserver.model.instancezone.Instance; +import org.l2jmobius.gameserver.model.skills.Skill; +import org.l2jmobius.gameserver.model.skills.SkillCaster; + +import instances.AbstractInstance; + +/** + * @author RobikBobik + * @NOTE: Retail like working - I get informations from wiki and youtube video. + * @TODO: Maybe rewrite code to modern style. + * @TODO: Check skill 50050 - working, but I dont know if is correct. + * @TODO: Ignis other skills - skills are implemented, but I dont know if is correct. + */ +public class ResidenceOfQueenIgnis extends AbstractInstance +{ + // NPCs + private static final int TARA = 34047; + private static final int FREYA = 29109; + + // RAID + private static final int IGNIS = 29105; + + // SKILLS + private static SkillHolder FIRE_RAG_1 = new SkillHolder(50050, 1); + private static SkillHolder FIRE_RAG_2 = new SkillHolder(50050, 2); + private static SkillHolder FIRE_RAG_3 = new SkillHolder(50050, 3); + private static SkillHolder FIRE_RAG_4 = new SkillHolder(50050, 4); + private static SkillHolder FIRE_RAG_5 = new SkillHolder(50050, 5); + private static SkillHolder FIRE_RAG_6 = new SkillHolder(50050, 6); + private static SkillHolder FIRE_RAG_7 = new SkillHolder(50050, 7); + private static SkillHolder FIRE_RAG_8 = new SkillHolder(50050, 8); + private static SkillHolder FIRE_RAG_9 = new SkillHolder(50050, 9); + private static SkillHolder FIRE_RAG_10 = new SkillHolder(50050, 10); + + private static SkillHolder FREYA_SAFETY_ZONE = new SkillHolder(50052, 1); // Just for an effect + // Misc + private static final int TEMPLATE_ID = 195; + + public ResidenceOfQueenIgnis() + { + super(TEMPLATE_ID); + addStartNpc(TARA); + addTalkId(FREYA); + addKillId(IGNIS); + addAttackId(IGNIS); + addInstanceLeaveId(TEMPLATE_ID); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + switch (event) + { + case "ENTER": + { + enterInstance(player, npc, TEMPLATE_ID); + player.getVariables().set("REMOVE_FIRE_RAGE", 0); + break; + } + case "REMOVE_FIRE_RAGE": + { + if (player.isAffectedBySkill(50050)) + { + if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 0) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 1); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 1) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 2); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 2) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 3); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 3) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 4); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 4) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 5); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 5) + { + npc.broadcastSay(ChatType.NPC_SHOUT, "You cannot use my power again."); + player.sendMessage("Freya: You cannot use my power again."); + } + } + else + { + npc.broadcastSay(ChatType.NPC_SHOUT, "I help you only when you affected by Fire Rage skill."); + } + break; + } + case "CAST_FIRE_RAGE_1": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_1.getSkill())) + { + npc.doCast(FIRE_RAG_1.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_2": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_2.getSkill())) + { + npc.doCast(FIRE_RAG_2.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_3": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_3.getSkill())) + { + npc.doCast(FIRE_RAG_3.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_4": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_4.getSkill())) + { + npc.doCast(FIRE_RAG_4.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_5": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_5.getSkill())) + { + npc.doCast(FIRE_RAG_5.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_6": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_6.getSkill())) + { + npc.doCast(FIRE_RAG_6.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_7": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_7.getSkill())) + { + npc.doCast(FIRE_RAG_7.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_8": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_8.getSkill())) + { + npc.doCast(FIRE_RAG_8.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_9": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_9.getSkill())) + { + npc.doCast(FIRE_RAG_9.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_10": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_10.getSkill())) + { + npc.doCast(FIRE_RAG_10.getSkill()); + } + break; + } + + } + return null; + } + + @Override + public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon, Skill skill) + { + if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.99)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.70))) + { + startQuestTimer("CAST_FIRE_RAGE_1", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.70)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.50))) + { + startQuestTimer("CAST_FIRE_RAGE_2", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.50)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.40))) + { + startQuestTimer("CAST_FIRE_RAGE_3", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.40)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.25))) + { + startQuestTimer("CAST_FIRE_RAGE_4", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.25)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.15))) + { + startQuestTimer("CAST_FIRE_RAGE_5", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.15)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.10))) + { + startQuestTimer("CAST_FIRE_RAGE_6", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.10)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.7))) + { + startQuestTimer("CAST_FIRE_RAGE_7", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.7)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.5))) + { + startQuestTimer("CAST_FIRE_RAGE_8", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.5)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.3))) + { + startQuestTimer("CAST_FIRE_RAGE_9", 1000, npc, null); + } + else if (npc.getCurrentHp() < (npc.getMaxHp() * 0.3)) + { + startQuestTimer("CAST_FIRE_RAGE_10", 1000, npc, null); + } + return super.onAttack(npc, attacker, damage, isSummon, skill); + } + + @Override + public String onKill(Npc npc, PlayerInstance player, boolean isSummon) + { + final Instance world = npc.getInstanceWorld(); + if (world != null) + { + world.finishInstance(); + } + return super.onKill(npc, player, isSummon); + } + + public static void main(String[] args) + { + new ResidenceOfQueenIgnis(); + } +} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/29000-29099.xml b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/29000-29099.xml index b5c7faac9f..1a89fcea32 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/29000-29099.xml +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/29000-29099.xml @@ -243,12 +243,21 @@
- + + + + + + + + + + diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/npcs/29100-29199.xml b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/npcs/29100-29199.xml index 5da6587d38..48ce30cb34 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/npcs/29100-29199.xml +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/npcs/29100-29199.xml @@ -109,7 +109,7 @@ - + ELEMENTAL MALE @@ -131,6 +131,8 @@ + + diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/skills/50000-50099.xml b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/skills/50000-50099.xml index b9e90c306f..b13033ed28 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/skills/50000-50099.xml +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/skills/50000-50099.xml @@ -440,11 +440,94 @@ icon.skill50050_9 icon.skill50050_10 - A1 + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + + -1 + BLEEDING + BLEEDING + DOT_BLEEDING + 100 + PHYSICAL + 40 + 720 + + -574 + -582 + -590 + -597 + -604 + -611 + -617 + -624 + -630 + -635 + + 1000 + 4000 + + 505 + 514 + 522 + 531 + 540 + 548 + 557 + 565 + 573 + 581 + true - 1500 - 500 - -100 + 1 + 20 + + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + + A2 + 180000 + 5 + ENEMY + RANGE + NOT_FRIEND + + + + 25 + 34 + 44 + 54 + 62 + 67 + 72 + 77 + 83 + 90 + + 5 + + + -20 + PER + + @@ -614,22 +697,53 @@ -100 - + 150 + 600 + -1 + 1100 + FIRE + 180 + 4000 + 2 + 99 A1 - 1 - 1500 - 500 - 5000 - -100 + 15000 + TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT + -5 + ENEMY + RANGE + NOT_FRIEND + + + 250 + + - - A1 + 6-12 + 200 + -338 + FIRE + 150 + 4000 + icon.skill50070 1 - 2000 - 500 - 5000 - -100 + 82 + 125 + 21 + A1 + 8000 + 5 + SELF + POINT_BLANK + NOT_FRIEND + + + + 138 + + + diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/skills/55700-55799.xml b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/skills/55700-55799.xml index fd8b829dc6..bccfb04a2c 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/skills/55700-55799.xml +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/skills/55700-55799.xml @@ -3,9 +3,26 @@ icon.skill0274 - A1 + 4 + 600 + CRITICAL_DMG_UP + 1 + 29014 2500 3000 + 2 + 1 + A2 + NONE + 5 + SELF + SINGLE + + + 35 + PER + + @@ -108,6 +125,7 @@ icon.etc_bm_brooch_lavianrose_i03 A1 + 4 AVE_BROOCH AVE_BROOCH diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/html/admin/reload.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/html/admin/reload.htm index 0642015dff..27aeb51dcc 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/html/admin/reload.htm +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/html/admin/reload.htm @@ -49,7 +49,7 @@ + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/html/teleporter/34047-1.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/html/teleporter/34047-1.htm index 68c304bf0c..76438a02f9 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/html/teleporter/34047-1.htm +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/html/teleporter/34047-1.htm @@ -4,5 +4,5 @@ I went to study one place where the energy of the fire was very strong. At that And you know, it's very strange, but in the same place I saw Ice Queen Freya. What could Freya do where the energy of fire pulsates? King Ignis has not yet declared himself openly, but is hiding and accumulating strength. Perhaps, when he leaves the shelter, Aden will plunge into chaos. Therefore, it is necessary in whatever would prevent Ignis.
But first you need to get a force that will help withstand the energy of fire. Collect loyal supporters and come back !!! Alone you can not cope.
(You need a command channel of 27 or more characters.). - + \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstanceZone.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstanceZone.java index 56deec9bcb..abf484a8c5 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstanceZone.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstanceZone.java @@ -54,7 +54,7 @@ public class AdminInstanceZone implements IAdminCommandHandler InstanceManager.getInstance().deleteInstanceTime(player, instanceId); BuilderUtil.sendSysMessage(activeChar, "Instance zone " + name + " cleared for player " + player.getName()); player.sendMessage("Admin cleared instance zone " + name + " for you"); - + display(activeChar, activeChar); // for refreshing instance window return true; } catch (Exception e) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminReload.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminReload.java index cf779c1f1f..dbcf3c4939 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminReload.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminReload.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.handler.IAdminCommandHandler; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.FakePlayerChatManager; +import org.l2jmobius.gameserver.instancemanager.InstanceManager; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.instancemanager.WalkingManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; @@ -339,6 +340,12 @@ public class AdminReload implements IAdminCommandHandler AdminData.getInstance().broadcastMessageToGMs(activeChar.getName() + ": Reloaded Localisation data."); break; } + case "instance": + { + InstanceManager.getInstance().load(); + AdminData.getInstance().broadcastMessageToGMs(activeChar.getName() + ": Reloaded Instances data."); + break; + } default: { activeChar.sendMessage(RELOAD_USAGE); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/instances/ResidenceOfIgnis/ResidenceOfQueenIgnis.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/instances/ResidenceOfIgnis/ResidenceOfQueenIgnis.java new file mode 100644 index 0000000000..face55cb40 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/instances/ResidenceOfIgnis/ResidenceOfQueenIgnis.java @@ -0,0 +1,279 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package instances.ResidenceOfIgnis; + +import org.l2jmobius.gameserver.enums.ChatType; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.SkillHolder; +import org.l2jmobius.gameserver.model.instancezone.Instance; +import org.l2jmobius.gameserver.model.skills.Skill; +import org.l2jmobius.gameserver.model.skills.SkillCaster; + +import instances.AbstractInstance; + +/** + * @author RobikBobik + * @NOTE: Retail like working - I get informations from wiki and youtube video. + * @TODO: Maybe rewrite code to modern style. + * @TODO: Check skill 50050 - working, but I dont know if is correct. + * @TODO: Ignis other skills - skills are implemented, but I dont know if is correct. + */ +public class ResidenceOfQueenIgnis extends AbstractInstance +{ + // NPCs + private static final int TARA = 34047; + private static final int FREYA = 29109; + + // RAID + private static final int IGNIS = 29105; + + // SKILLS + private static SkillHolder FIRE_RAG_1 = new SkillHolder(50050, 1); + private static SkillHolder FIRE_RAG_2 = new SkillHolder(50050, 2); + private static SkillHolder FIRE_RAG_3 = new SkillHolder(50050, 3); + private static SkillHolder FIRE_RAG_4 = new SkillHolder(50050, 4); + private static SkillHolder FIRE_RAG_5 = new SkillHolder(50050, 5); + private static SkillHolder FIRE_RAG_6 = new SkillHolder(50050, 6); + private static SkillHolder FIRE_RAG_7 = new SkillHolder(50050, 7); + private static SkillHolder FIRE_RAG_8 = new SkillHolder(50050, 8); + private static SkillHolder FIRE_RAG_9 = new SkillHolder(50050, 9); + private static SkillHolder FIRE_RAG_10 = new SkillHolder(50050, 10); + + private static SkillHolder FREYA_SAFETY_ZONE = new SkillHolder(50052, 1); // Just for an effect + // Misc + private static final int TEMPLATE_ID = 195; + + public ResidenceOfQueenIgnis() + { + super(TEMPLATE_ID); + addStartNpc(TARA); + addTalkId(FREYA); + addKillId(IGNIS); + addAttackId(IGNIS); + addInstanceLeaveId(TEMPLATE_ID); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + switch (event) + { + case "ENTER": + { + enterInstance(player, npc, TEMPLATE_ID); + player.getVariables().set("REMOVE_FIRE_RAGE", 0); + break; + } + case "REMOVE_FIRE_RAGE": + { + if (player.isAffectedBySkill(50050)) + { + if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 0) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 1); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 1) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 2); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 2) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 3); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 3) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 4); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 4) + { + player.getVariables().set("REMOVE_FIRE_RAGE", 5); + player.stopSkillEffects(true, 50050); + player.doCast(FREYA_SAFETY_ZONE.getSkill()); + npc.broadcastSay(ChatType.NPC_SHOUT, "Bless with you. Lets finish fight!"); + } + else if (player.getVariables().getInt("REMOVE_FIRE_RAGE") == 5) + { + npc.broadcastSay(ChatType.NPC_SHOUT, "You cannot use my power again."); + player.sendMessage("Freya: You cannot use my power again."); + } + } + else + { + npc.broadcastSay(ChatType.NPC_SHOUT, "I help you only when you affected by Fire Rage skill."); + } + break; + } + case "CAST_FIRE_RAGE_1": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_1.getSkill())) + { + npc.doCast(FIRE_RAG_1.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_2": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_2.getSkill())) + { + npc.doCast(FIRE_RAG_2.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_3": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_3.getSkill())) + { + npc.doCast(FIRE_RAG_3.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_4": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_4.getSkill())) + { + npc.doCast(FIRE_RAG_4.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_5": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_5.getSkill())) + { + npc.doCast(FIRE_RAG_5.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_6": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_6.getSkill())) + { + npc.doCast(FIRE_RAG_6.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_7": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_7.getSkill())) + { + npc.doCast(FIRE_RAG_7.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_8": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_8.getSkill())) + { + npc.doCast(FIRE_RAG_8.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_9": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_9.getSkill())) + { + npc.doCast(FIRE_RAG_9.getSkill()); + } + break; + } + case "CAST_FIRE_RAGE_10": + { + if (SkillCaster.checkUseConditions(npc, FIRE_RAG_10.getSkill())) + { + npc.doCast(FIRE_RAG_10.getSkill()); + } + break; + } + + } + return null; + } + + @Override + public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon, Skill skill) + { + if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.99)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.70))) + { + startQuestTimer("CAST_FIRE_RAGE_1", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.70)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.50))) + { + startQuestTimer("CAST_FIRE_RAGE_2", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.50)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.40))) + { + startQuestTimer("CAST_FIRE_RAGE_3", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.40)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.25))) + { + startQuestTimer("CAST_FIRE_RAGE_4", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.25)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.15))) + { + startQuestTimer("CAST_FIRE_RAGE_5", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.15)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.10))) + { + startQuestTimer("CAST_FIRE_RAGE_6", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.10)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.7))) + { + startQuestTimer("CAST_FIRE_RAGE_7", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.7)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.5))) + { + startQuestTimer("CAST_FIRE_RAGE_8", 1000, npc, null); + } + else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.5)) && (npc.getCurrentHp() > (npc.getMaxHp() * 0.3))) + { + startQuestTimer("CAST_FIRE_RAGE_9", 1000, npc, null); + } + else if (npc.getCurrentHp() < (npc.getMaxHp() * 0.3)) + { + startQuestTimer("CAST_FIRE_RAGE_10", 1000, npc, null); + } + return super.onAttack(npc, attacker, damage, isSummon, skill); + } + + @Override + public String onKill(Npc npc, PlayerInstance player, boolean isSummon) + { + final Instance world = npc.getInstanceWorld(); + if (world != null) + { + world.finishInstance(); + } + return super.onKill(npc, player, isSummon); + } + + public static void main(String[] args) + { + new ResidenceOfQueenIgnis(); + } +} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/29000-29099.xml b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/29000-29099.xml index b5c7faac9f..1a89fcea32 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/29000-29099.xml +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/29000-29099.xml @@ -243,12 +243,21 @@
- + + + + + + + + + + diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/npcs/29100-29199.xml b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/npcs/29100-29199.xml index 040557f5f3..0ed8d84678 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/npcs/29100-29199.xml +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/npcs/29100-29199.xml @@ -109,7 +109,7 @@ - + ELEMENTAL MALE @@ -131,6 +131,8 @@ + + diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/skills/50000-50099.xml b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/skills/50000-50099.xml index cd4b29c712..22411ddd72 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/skills/50000-50099.xml +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/skills/50000-50099.xml @@ -453,11 +453,94 @@ icon.skill50050_9 icon.skill50050_10 - A1 + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + + -1 + BLEEDING + BLEEDING + DOT_BLEEDING + 100 + PHYSICAL + 40 + 720 + + -574 + -582 + -590 + -597 + -604 + -611 + -617 + -624 + -630 + -635 + + 1000 + 4000 + + 505 + 514 + 522 + 531 + 540 + 548 + 557 + 565 + 573 + 581 + true - 1500 - 500 - -100 + 1 + 20 + + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + 82 + + A2 + 180000 + 5 + ENEMY + RANGE + NOT_FRIEND + + + + 25 + 34 + 44 + 54 + 62 + 67 + 72 + 77 + 83 + 90 + + 5 + + + -20 + PER + + @@ -627,22 +710,53 @@ -100 - + 150 + 600 + -1 + 1100 + FIRE + 180 + 4000 + 2 + 99 A1 - 1 - 1500 - 500 - 5000 - -100 + 15000 + TURN_FLEE;KNOCKDOWN;DEPORT;SILENCE;PARALYZE;ABSORB;DISARM;SILENCE_PHYSICAL;SILENCE_ALL;CHANGEBODY;TURN_STONE;DERANGEMENT;AIRBIND;SLEEP;OBLIVION;MIRAGE;MIRAGE_TRAP;ROOT_MAGICALLY;ROOT_PHYSICALLY;STUN;PUBLIC_SLOT + -5 + ENEMY + RANGE + NOT_FRIEND + + + 250 + + - - A1 + 6-12 + 200 + -338 + FIRE + 150 + 4000 + icon.skill50070 1 - 2000 - 500 - 5000 - -100 + 82 + 125 + 21 + A1 + 8000 + 5 + SELF + POINT_BLANK + NOT_FRIEND + + + + 138 + + + diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/skills/55700-55799.xml b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/skills/55700-55799.xml index e0bb1dc400..1d3a0c16ed 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/skills/55700-55799.xml +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/skills/55700-55799.xml @@ -3,9 +3,26 @@ icon.skill0274 - A1 + 4 + 600 + CRITICAL_DMG_UP + 1 + 29014 2500 3000 + 2 + 1 + A2 + NONE + 5 + SELF + SINGLE + + + 35 + PER + + @@ -115,7 +132,6 @@ A1 - 1 AVE_BROOCH,10 diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/html/admin/reload.htm b/L2J_Mobius_Classic_Interlude/dist/game/data/html/admin/reload.htm index 0642015dff..27aeb51dcc 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/html/admin/reload.htm +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/html/admin/reload.htm @@ -49,7 +49,7 @@