From d7b9cc53de8c344b0f1d1ddb917e9d06c063d89a Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Fri, 12 Aug 2022 00:57:38 +0000 Subject: [PATCH] Orfen AI and grandboss SQL adjustments. Contributed by nasseka. --- .../db_installer/sql/game/grandboss_data.sql | 8 +- .../data/scripts/ai/bosses/Orfen/Orfen.java | 181 +----------------- .../dist/game/data/stats/npcs/29000-29099.xml | 3 - .../db_installer/sql/game/grandboss_data.sql | 8 +- .../data/scripts/ai/bosses/Orfen/Orfen.java | 181 +----------------- .../dist/game/data/stats/npcs/29000-29099.xml | 3 - .../db_installer/sql/game/grandboss_data.sql | 8 +- .../data/scripts/ai/bosses/Orfen/Orfen.java | 181 +----------------- .../dist/game/data/stats/npcs/29000-29099.xml | 3 - .../db_installer/sql/game/grandboss_data.sql | 8 +- .../data/scripts/ai/bosses/Orfen/Orfen.java | 181 +----------------- .../dist/game/data/stats/npcs/29000-29099.xml | 3 - 12 files changed, 48 insertions(+), 720 deletions(-) diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/db_installer/sql/game/grandboss_data.sql b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/db_installer/sql/game/grandboss_data.sql index 9ad3ae33ce..b4a1f552fd 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/db_installer/sql/game/grandboss_data.sql +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/db_installer/sql/game/grandboss_data.sql @@ -13,12 +13,12 @@ CREATE TABLE IF NOT EXISTS `grandboss_data` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; INSERT IGNORE INTO `grandboss_data` (`boss_id`,`loc_x`,`loc_y`,`loc_z`,`heading`,`currentHP`,`currentMP`) VALUES -(29001, -21610, 181594, -5734, 0, 229898.48, 667.776), -- Queen Ant +(29001, 93069, 8925, -3904, 0, 229898.48, 667.776), -- Queen Ant (29006, 17726, 108915, -6480, 0, 622493.58388, 3793.536), -- Core -(29014, 55024, 17368, -5412, 10126, 622493.58388, 3793.536), -- Orfen +(29014, 64418, 29467, -3792, 10126, 622493.58388, 3793.536), -- Orfen (29020, 116033, 17447, 10107, -25348, 4068372, 39960), -- Baium (29022, 52207, 217230, -3341, 0, 28531442, 12240), -- Zaken -- (29028, -105200, -253104, -15264, 0, 62041918, 2248572), -- Valakas (29068, 185708, 114298, -8221,32768, 62802301, 1998000); -- Antharas --- (25286, 185080, -12613, -5499, 16550, 556345880, 86847), -- Anakim --- (25283, 185062, -9605, -5499, 15640, 486021997, 79600), -- Lilith +-- (25286, -6675, 18505, -5488, 16550, 556345880, 86847), -- Anakim +-- (25283, 185059, -9610, -5488, 15640, 486021997, 79600), -- Lilith diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 1d3732e60e..0ca8ce908a 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -16,14 +16,10 @@ */ package ai.bosses.Orfen; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; -import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.StatSet; @@ -35,8 +31,6 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.GrandBoss; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skill.Skill; -import org.l2jmobius.gameserver.model.skill.SkillCaster; -import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; @@ -44,17 +38,11 @@ import ai.AbstractNpcAI; /** * Orfen's AI - * @author Emperorc + * @author Emperorc, NasSeKa */ public class Orfen extends AbstractNpcAI { - private static final Location[] POS = - { - new Location(43728, 17220, -4342), - new Location(55024, 17368, -5412), - new Location(53504, 21248, -5486), - new Location(53248, 24576, -5262) - }; + private static final Location POS = new Location(64418, 29467, -3792); private static final NpcStringId[] TEXT = { @@ -65,33 +53,15 @@ public class Orfen extends AbstractNpcAI }; private static final int ORFEN = 29014; - // private static final int RAIKEL = 29015; - private static final int RAIKEL_LEOS = 29016; - // private static final int RIBA = 29017; - private static final int RIBA_IREN = 29018; private static final byte ALIVE = 0; private static final byte DEAD = 1; private static final SkillHolder PARALYSIS = new SkillHolder(4064, 1); - private static final SkillHolder BLOW = new SkillHolder(4067, 4); - private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); - - private static boolean _isTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType _zone; private Orfen() { - final int[] mobs = - { - ORFEN, - RAIKEL_LEOS, - RIBA_IREN - }; - registerMobs(mobs); - _isTeleported = false; - _zone = ZoneManager.getInstance().getZoneById(12013); + registerMobs(ORFEN); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getStatus(ORFEN); if (status == DEAD) @@ -107,21 +77,7 @@ public class Orfen extends AbstractNpcAI else { // the time has already expired while the server was offline. Immediately spawn Orfen. - final int i = getRandom(10); - Location loc; - if (i < 4) - { - loc = POS[1]; - } - else if (i < 7) - { - loc = POS[2]; - } - else - { - loc = POS[3]; - } - final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, loc, false, 0); + final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, POS, false, 0); GrandBossManager.getInstance().setStatus(ORFEN, ALIVE); spawnBoss(orfen); } @@ -145,8 +101,8 @@ public class Orfen extends AbstractNpcAI ((Attackable) npc).clearAggroList(); npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null, null); final Spawn spawn = npc.getSpawn(); - spawn.setLocation(POS[index]); - npc.teleToLocation(POS[index], false); + spawn.setLocation(POS); + npc.teleToLocation(POS, false); } public void spawnBoss(GrandBoss npc) @@ -154,23 +110,6 @@ public class Orfen extends AbstractNpcAI GrandBossManager.getInstance().addBoss(npc); npc.broadcastPacket(new PlaySound(1, "BS01_A", 1, npc.getObjectId(), npc.getX(), npc.getY(), npc.getZ())); startQuestTimer("check_orfen_pos", 10000, npc, null, true); - // Spawn minions - final int x = npc.getX(); - final int y = npc.getY(); - Attackable mob; - mob = (Attackable) addSpawn(RAIKEL_LEOS, x + 100, y + 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - mob = (Attackable) addSpawn(RAIKEL_LEOS, x + 100, y - 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - mob = (Attackable) addSpawn(RAIKEL_LEOS, x - 100, y + 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - mob = (Attackable) addSpawn(RAIKEL_LEOS, x - 100, y - 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - startQuestTimer("check_minion_loc", 10000, npc, null, true); } @Override @@ -178,62 +117,10 @@ public class Orfen extends AbstractNpcAI { if (event.equalsIgnoreCase("orfen_unlock")) { - final int i = getRandom(10); - Location loc; - if (i < 4) - { - loc = POS[1]; - } - else if (i < 7) - { - loc = POS[2]; - } - else - { - loc = POS[3]; - } - final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, loc, false, 0); + final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, POS, false, 0); GrandBossManager.getInstance().setStatus(ORFEN, ALIVE); spawnBoss(orfen); } - else if (event.equalsIgnoreCase("check_orfen_pos")) - { - if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) - { - setSpawnPoint(npc, getRandom(3) + 1); - _isTeleported = false; - } - else if (_isTeleported && !_zone.isInsideZone(npc)) - { - setSpawnPoint(npc, 0); - } - } - else if (event.equalsIgnoreCase("check_minion_loc")) - { - for (Attackable mob : _minions) - { - if (!npc.isInsideRadius2D(mob, 3000)) - { - mob.teleToLocation(npc.getLocation()); - ((Attackable) npc).clearAggroList(); - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null, null); - } - } - } - else if (event.equalsIgnoreCase("despawn_minions")) - { - for (Attackable mob : _minions) - { - mob.decayMe(); - } - _minions.clear(); - } - else if (event.equalsIgnoreCase("spawn_minion")) - { - final Attackable mob = (Attackable) addSpawn(RAIKEL_LEOS, npc.getX(), npc.getY(), npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - } return super.onAdvEvent(event, npc, player); } @@ -254,49 +141,13 @@ public class Orfen extends AbstractNpcAI return super.onSkillSee(npc, caster, skill, targets, isSummon); } - @Override - public String onFactionCall(Npc npc, Npc caller, Player attacker, boolean isSummon) - { - if ((caller == null) || (npc == null) || npc.isCastingNow(SkillCaster::isAnyNormalType)) - { - return super.onFactionCall(npc, caller, attacker, isSummon); - } - final int npcId = npc.getId(); - final int callerId = caller.getId(); - if ((npcId == RAIKEL_LEOS) && (getRandom(20) == 0)) - { - npc.setTarget(attacker); - npc.doCast(BLOW.getSkill()); - } - else if (npcId == RIBA_IREN) - { - int chance = 1; - if (callerId == ORFEN) - { - chance = 9; - } - if ((callerId != RIBA_IREN) && (caller.getCurrentHp() < (caller.getMaxHp() / 2.0)) && (getRandom(10) < chance)) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null, null); - npc.setTarget(caller); - npc.doCast(ORFEN_HEAL.getSkill()); - } - } - return super.onFactionCall(npc, caller, attacker, isSummon); - } - @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) - { - _isTeleported = true; - setSpawnPoint(npc, 0); - } - else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) + if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) { npc.broadcastSay(ChatType.NPC_GENERAL, TEXT[getRandom(3)], attacker.getName()); attacker.teleToLocation(npc.getLocation()); @@ -304,14 +155,6 @@ public class Orfen extends AbstractNpcAI npc.doCast(PARALYSIS.getSkill()); } } - else if (npcId == RIBA_IREN) - { - if (!npc.isCastingNow(SkillCaster::isAnyNormalType) && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2.0))) - { - npc.setTarget(attacker); - npc.doCast(ORFEN_HEAL.getSkill()); - } - } return super.onAttack(npc, attacker, damage, isSummon); } @@ -330,15 +173,7 @@ public class Orfen extends AbstractNpcAI final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); info.set("respawn_time", System.currentTimeMillis() + respawnTime); GrandBossManager.getInstance().setStatSet(ORFEN, info); - cancelQuestTimer("check_minion_loc", npc, null); cancelQuestTimer("check_orfen_pos", npc, null); - startQuestTimer("despawn_minions", 20000, null, null); - cancelQuestTimers("spawn_minion"); - } - else if ((GrandBossManager.getInstance().getStatus(ORFEN) == ALIVE) && (npc.getId() == RAIKEL_LEOS)) - { - _minions.remove(npc); - startQuestTimer("spawn_minion", 360000, npc, null); } return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/npcs/29000-29099.xml b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/npcs/29000-29099.xml index 5187ca6b15..9773c023cd 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/npcs/29000-29099.xml +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/npcs/29000-29099.xml @@ -760,9 +760,6 @@ - - - FAIRY FEMALE diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/db_installer/sql/game/grandboss_data.sql b/L2J_Mobius_Essence_5.2_FrostLord/dist/db_installer/sql/game/grandboss_data.sql index 9ad3ae33ce..b4a1f552fd 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/db_installer/sql/game/grandboss_data.sql +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/db_installer/sql/game/grandboss_data.sql @@ -13,12 +13,12 @@ CREATE TABLE IF NOT EXISTS `grandboss_data` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; INSERT IGNORE INTO `grandboss_data` (`boss_id`,`loc_x`,`loc_y`,`loc_z`,`heading`,`currentHP`,`currentMP`) VALUES -(29001, -21610, 181594, -5734, 0, 229898.48, 667.776), -- Queen Ant +(29001, 93069, 8925, -3904, 0, 229898.48, 667.776), -- Queen Ant (29006, 17726, 108915, -6480, 0, 622493.58388, 3793.536), -- Core -(29014, 55024, 17368, -5412, 10126, 622493.58388, 3793.536), -- Orfen +(29014, 64418, 29467, -3792, 10126, 622493.58388, 3793.536), -- Orfen (29020, 116033, 17447, 10107, -25348, 4068372, 39960), -- Baium (29022, 52207, 217230, -3341, 0, 28531442, 12240), -- Zaken -- (29028, -105200, -253104, -15264, 0, 62041918, 2248572), -- Valakas (29068, 185708, 114298, -8221,32768, 62802301, 1998000); -- Antharas --- (25286, 185080, -12613, -5499, 16550, 556345880, 86847), -- Anakim --- (25283, 185062, -9605, -5499, 15640, 486021997, 79600), -- Lilith +-- (25286, -6675, 18505, -5488, 16550, 556345880, 86847), -- Anakim +-- (25283, 185059, -9610, -5488, 15640, 486021997, 79600), -- Lilith diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 1d3732e60e..0ca8ce908a 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -16,14 +16,10 @@ */ package ai.bosses.Orfen; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; -import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.StatSet; @@ -35,8 +31,6 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.GrandBoss; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skill.Skill; -import org.l2jmobius.gameserver.model.skill.SkillCaster; -import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; @@ -44,17 +38,11 @@ import ai.AbstractNpcAI; /** * Orfen's AI - * @author Emperorc + * @author Emperorc, NasSeKa */ public class Orfen extends AbstractNpcAI { - private static final Location[] POS = - { - new Location(43728, 17220, -4342), - new Location(55024, 17368, -5412), - new Location(53504, 21248, -5486), - new Location(53248, 24576, -5262) - }; + private static final Location POS = new Location(64418, 29467, -3792); private static final NpcStringId[] TEXT = { @@ -65,33 +53,15 @@ public class Orfen extends AbstractNpcAI }; private static final int ORFEN = 29014; - // private static final int RAIKEL = 29015; - private static final int RAIKEL_LEOS = 29016; - // private static final int RIBA = 29017; - private static final int RIBA_IREN = 29018; private static final byte ALIVE = 0; private static final byte DEAD = 1; private static final SkillHolder PARALYSIS = new SkillHolder(4064, 1); - private static final SkillHolder BLOW = new SkillHolder(4067, 4); - private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); - - private static boolean _isTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType _zone; private Orfen() { - final int[] mobs = - { - ORFEN, - RAIKEL_LEOS, - RIBA_IREN - }; - registerMobs(mobs); - _isTeleported = false; - _zone = ZoneManager.getInstance().getZoneById(12013); + registerMobs(ORFEN); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getStatus(ORFEN); if (status == DEAD) @@ -107,21 +77,7 @@ public class Orfen extends AbstractNpcAI else { // the time has already expired while the server was offline. Immediately spawn Orfen. - final int i = getRandom(10); - Location loc; - if (i < 4) - { - loc = POS[1]; - } - else if (i < 7) - { - loc = POS[2]; - } - else - { - loc = POS[3]; - } - final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, loc, false, 0); + final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, POS, false, 0); GrandBossManager.getInstance().setStatus(ORFEN, ALIVE); spawnBoss(orfen); } @@ -145,8 +101,8 @@ public class Orfen extends AbstractNpcAI ((Attackable) npc).clearAggroList(); npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null, null); final Spawn spawn = npc.getSpawn(); - spawn.setLocation(POS[index]); - npc.teleToLocation(POS[index], false); + spawn.setLocation(POS); + npc.teleToLocation(POS, false); } public void spawnBoss(GrandBoss npc) @@ -154,23 +110,6 @@ public class Orfen extends AbstractNpcAI GrandBossManager.getInstance().addBoss(npc); npc.broadcastPacket(new PlaySound(1, "BS01_A", 1, npc.getObjectId(), npc.getX(), npc.getY(), npc.getZ())); startQuestTimer("check_orfen_pos", 10000, npc, null, true); - // Spawn minions - final int x = npc.getX(); - final int y = npc.getY(); - Attackable mob; - mob = (Attackable) addSpawn(RAIKEL_LEOS, x + 100, y + 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - mob = (Attackable) addSpawn(RAIKEL_LEOS, x + 100, y - 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - mob = (Attackable) addSpawn(RAIKEL_LEOS, x - 100, y + 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - mob = (Attackable) addSpawn(RAIKEL_LEOS, x - 100, y - 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - startQuestTimer("check_minion_loc", 10000, npc, null, true); } @Override @@ -178,62 +117,10 @@ public class Orfen extends AbstractNpcAI { if (event.equalsIgnoreCase("orfen_unlock")) { - final int i = getRandom(10); - Location loc; - if (i < 4) - { - loc = POS[1]; - } - else if (i < 7) - { - loc = POS[2]; - } - else - { - loc = POS[3]; - } - final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, loc, false, 0); + final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, POS, false, 0); GrandBossManager.getInstance().setStatus(ORFEN, ALIVE); spawnBoss(orfen); } - else if (event.equalsIgnoreCase("check_orfen_pos")) - { - if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) - { - setSpawnPoint(npc, getRandom(3) + 1); - _isTeleported = false; - } - else if (_isTeleported && !_zone.isInsideZone(npc)) - { - setSpawnPoint(npc, 0); - } - } - else if (event.equalsIgnoreCase("check_minion_loc")) - { - for (Attackable mob : _minions) - { - if (!npc.isInsideRadius2D(mob, 3000)) - { - mob.teleToLocation(npc.getLocation()); - ((Attackable) npc).clearAggroList(); - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null, null); - } - } - } - else if (event.equalsIgnoreCase("despawn_minions")) - { - for (Attackable mob : _minions) - { - mob.decayMe(); - } - _minions.clear(); - } - else if (event.equalsIgnoreCase("spawn_minion")) - { - final Attackable mob = (Attackable) addSpawn(RAIKEL_LEOS, npc.getX(), npc.getY(), npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - } return super.onAdvEvent(event, npc, player); } @@ -254,49 +141,13 @@ public class Orfen extends AbstractNpcAI return super.onSkillSee(npc, caster, skill, targets, isSummon); } - @Override - public String onFactionCall(Npc npc, Npc caller, Player attacker, boolean isSummon) - { - if ((caller == null) || (npc == null) || npc.isCastingNow(SkillCaster::isAnyNormalType)) - { - return super.onFactionCall(npc, caller, attacker, isSummon); - } - final int npcId = npc.getId(); - final int callerId = caller.getId(); - if ((npcId == RAIKEL_LEOS) && (getRandom(20) == 0)) - { - npc.setTarget(attacker); - npc.doCast(BLOW.getSkill()); - } - else if (npcId == RIBA_IREN) - { - int chance = 1; - if (callerId == ORFEN) - { - chance = 9; - } - if ((callerId != RIBA_IREN) && (caller.getCurrentHp() < (caller.getMaxHp() / 2.0)) && (getRandom(10) < chance)) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null, null); - npc.setTarget(caller); - npc.doCast(ORFEN_HEAL.getSkill()); - } - } - return super.onFactionCall(npc, caller, attacker, isSummon); - } - @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) - { - _isTeleported = true; - setSpawnPoint(npc, 0); - } - else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) + if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) { npc.broadcastSay(ChatType.NPC_GENERAL, TEXT[getRandom(3)], attacker.getName()); attacker.teleToLocation(npc.getLocation()); @@ -304,14 +155,6 @@ public class Orfen extends AbstractNpcAI npc.doCast(PARALYSIS.getSkill()); } } - else if (npcId == RIBA_IREN) - { - if (!npc.isCastingNow(SkillCaster::isAnyNormalType) && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2.0))) - { - npc.setTarget(attacker); - npc.doCast(ORFEN_HEAL.getSkill()); - } - } return super.onAttack(npc, attacker, damage, isSummon); } @@ -330,15 +173,7 @@ public class Orfen extends AbstractNpcAI final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); info.set("respawn_time", System.currentTimeMillis() + respawnTime); GrandBossManager.getInstance().setStatSet(ORFEN, info); - cancelQuestTimer("check_minion_loc", npc, null); cancelQuestTimer("check_orfen_pos", npc, null); - startQuestTimer("despawn_minions", 20000, null, null); - cancelQuestTimers("spawn_minion"); - } - else if ((GrandBossManager.getInstance().getStatus(ORFEN) == ALIVE) && (npc.getId() == RAIKEL_LEOS)) - { - _minions.remove(npc); - startQuestTimer("spawn_minion", 360000, npc, null); } return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/npcs/29000-29099.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/npcs/29000-29099.xml index 734d09d677..d63325bca8 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/npcs/29000-29099.xml +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/npcs/29000-29099.xml @@ -763,9 +763,6 @@ - - - FAIRY FEMALE diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/db_installer/sql/game/grandboss_data.sql b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/db_installer/sql/game/grandboss_data.sql index 9ad3ae33ce..b4a1f552fd 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/db_installer/sql/game/grandboss_data.sql +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/db_installer/sql/game/grandboss_data.sql @@ -13,12 +13,12 @@ CREATE TABLE IF NOT EXISTS `grandboss_data` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; INSERT IGNORE INTO `grandboss_data` (`boss_id`,`loc_x`,`loc_y`,`loc_z`,`heading`,`currentHP`,`currentMP`) VALUES -(29001, -21610, 181594, -5734, 0, 229898.48, 667.776), -- Queen Ant +(29001, 93069, 8925, -3904, 0, 229898.48, 667.776), -- Queen Ant (29006, 17726, 108915, -6480, 0, 622493.58388, 3793.536), -- Core -(29014, 55024, 17368, -5412, 10126, 622493.58388, 3793.536), -- Orfen +(29014, 64418, 29467, -3792, 10126, 622493.58388, 3793.536), -- Orfen (29020, 116033, 17447, 10107, -25348, 4068372, 39960), -- Baium (29022, 52207, 217230, -3341, 0, 28531442, 12240), -- Zaken -- (29028, -105200, -253104, -15264, 0, 62041918, 2248572), -- Valakas (29068, 185708, 114298, -8221,32768, 62802301, 1998000); -- Antharas --- (25286, 185080, -12613, -5499, 16550, 556345880, 86847), -- Anakim --- (25283, 185062, -9605, -5499, 15640, 486021997, 79600), -- Lilith +-- (25286, -6675, 18505, -5488, 16550, 556345880, 86847), -- Anakim +-- (25283, 185059, -9610, -5488, 15640, 486021997, 79600), -- Lilith diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 24284fbd19..9ade75b6bd 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -16,14 +16,10 @@ */ package ai.bosses.Orfen; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; -import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.StatSet; @@ -35,8 +31,6 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.GrandBoss; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skill.Skill; -import org.l2jmobius.gameserver.model.skill.SkillCaster; -import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; @@ -44,17 +38,11 @@ import ai.AbstractNpcAI; /** * Orfen's AI - * @author Emperorc + * @author Emperorc, NasSeKa */ public class Orfen extends AbstractNpcAI { - private static final Location[] POS = - { - new Location(43728, 17220, -4342), - new Location(55024, 17368, -5412), - new Location(53504, 21248, -5486), - new Location(53248, 24576, -5262) - }; + private static final Location POS = new Location(64418, 29467, -3792); private static final NpcStringId[] TEXT = { @@ -65,33 +53,15 @@ public class Orfen extends AbstractNpcAI }; private static final int ORFEN = 29014; - // private static final int RAIKEL = 29015; - private static final int RAIKEL_LEOS = 29016; - // private static final int RIBA = 29017; - private static final int RIBA_IREN = 29018; private static final byte ALIVE = 0; private static final byte DEAD = 1; private static final SkillHolder PARALYSIS = new SkillHolder(4064, 1); - private static final SkillHolder BLOW = new SkillHolder(4067, 4); - private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); - - private static boolean _isTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType _zone; private Orfen() { - final int[] mobs = - { - ORFEN, - RAIKEL_LEOS, - RIBA_IREN - }; - registerMobs(mobs); - _isTeleported = false; - _zone = ZoneManager.getInstance().getZoneById(12013); + registerMobs(ORFEN); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getStatus(ORFEN); if (status == DEAD) @@ -107,21 +77,7 @@ public class Orfen extends AbstractNpcAI else { // the time has already expired while the server was offline. Immediately spawn Orfen. - final int i = getRandom(10); - Location loc; - if (i < 4) - { - loc = POS[1]; - } - else if (i < 7) - { - loc = POS[2]; - } - else - { - loc = POS[3]; - } - final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, loc, false, 0); + final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, POS, false, 0); GrandBossManager.getInstance().setStatus(ORFEN, ALIVE); spawnBoss(orfen); } @@ -145,8 +101,8 @@ public class Orfen extends AbstractNpcAI ((Attackable) npc).clearAggroList(); npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null, null); final Spawn spawn = npc.getSpawn(); - spawn.setLocation(POS[index]); - npc.teleToLocation(POS[index], false); + spawn.setLocation(POS); + npc.teleToLocation(POS, false); } public void spawnBoss(GrandBoss npc) @@ -154,23 +110,6 @@ public class Orfen extends AbstractNpcAI GrandBossManager.getInstance().addBoss(npc); npc.broadcastPacket(new PlaySound(1, "BS01_A", 1, npc.getObjectId(), npc.getX(), npc.getY(), npc.getZ())); startQuestTimer("check_orfen_pos", 10000, npc, null, true); - // Spawn minions - final int x = npc.getX(); - final int y = npc.getY(); - Attackable mob; - mob = (Attackable) addSpawn(RAIKEL_LEOS, x + 100, y + 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - mob = (Attackable) addSpawn(RAIKEL_LEOS, x + 100, y - 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - mob = (Attackable) addSpawn(RAIKEL_LEOS, x - 100, y + 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - mob = (Attackable) addSpawn(RAIKEL_LEOS, x - 100, y - 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - startQuestTimer("check_minion_loc", 10000, npc, null, true); } @Override @@ -178,62 +117,10 @@ public class Orfen extends AbstractNpcAI { if (event.equalsIgnoreCase("orfen_unlock")) { - final int i = getRandom(10); - Location loc; - if (i < 4) - { - loc = POS[1]; - } - else if (i < 7) - { - loc = POS[2]; - } - else - { - loc = POS[3]; - } - final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, loc, false, 0); + final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, POS, false, 0); GrandBossManager.getInstance().setStatus(ORFEN, ALIVE); spawnBoss(orfen); } - else if (event.equalsIgnoreCase("check_orfen_pos")) - { - if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) - { - setSpawnPoint(npc, getRandom(3) + 1); - _isTeleported = false; - } - else if (_isTeleported && !_zone.isInsideZone(npc)) - { - setSpawnPoint(npc, 0); - } - } - else if (event.equalsIgnoreCase("check_minion_loc")) - { - for (Attackable mob : _minions) - { - if (!npc.isInsideRadius2D(mob, 3000)) - { - mob.teleToLocation(npc.getLocation()); - ((Attackable) npc).clearAggroList(); - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null, null); - } - } - } - else if (event.equalsIgnoreCase("despawn_minions")) - { - for (Attackable mob : _minions) - { - mob.decayMe(); - } - _minions.clear(); - } - else if (event.equalsIgnoreCase("spawn_minion")) - { - final Attackable mob = (Attackable) addSpawn(RAIKEL_LEOS, npc.getX(), npc.getY(), npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - } return super.onAdvEvent(event, npc, player); } @@ -254,49 +141,13 @@ public class Orfen extends AbstractNpcAI return super.onSkillSee(npc, caster, skill, targets, isSummon); } - @Override - public String onFactionCall(Npc npc, Npc caller, Player attacker, boolean isSummon) - { - if ((caller == null) || (npc == null) || npc.isCastingNow(SkillCaster::isAnyNormalType)) - { - return super.onFactionCall(npc, caller, attacker, isSummon); - } - final int npcId = npc.getId(); - final int callerId = caller.getId(); - if ((npcId == RAIKEL_LEOS) && (getRandom(20) == 0)) - { - npc.setTarget(attacker); - npc.doCast(BLOW.getSkill()); - } - else if (npcId == RIBA_IREN) - { - int chance = 1; - if (callerId == ORFEN) - { - chance = 9; - } - if ((callerId != RIBA_IREN) && (caller.getCurrentHp() < (caller.getMaxHp() / 2.0)) && (getRandom(10) < chance)) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null, null); - npc.setTarget(caller); - npc.doCast(ORFEN_HEAL.getSkill()); - } - } - return super.onFactionCall(npc, caller, attacker, isSummon); - } - @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) - { - _isTeleported = true; - setSpawnPoint(npc, 0); - } - else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) + if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) { npc.broadcastSay(ChatType.NPC_GENERAL, TEXT[getRandom(3)], attacker.getName()); attacker.teleToLocation(npc.getLocation()); @@ -304,14 +155,6 @@ public class Orfen extends AbstractNpcAI npc.doCast(PARALYSIS.getSkill()); } } - else if (npcId == RIBA_IREN) - { - if (!npc.isCastingNow(SkillCaster::isAnyNormalType) && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2.0))) - { - npc.setTarget(attacker); - npc.doCast(ORFEN_HEAL.getSkill()); - } - } return super.onAttack(npc, attacker, damage, isSummon); } @@ -330,15 +173,7 @@ public class Orfen extends AbstractNpcAI final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); info.set("respawn_time", System.currentTimeMillis() + respawnTime); GrandBossManager.getInstance().setStatSet(ORFEN, info); - cancelQuestTimer("check_minion_loc", npc, null); cancelQuestTimer("check_orfen_pos", npc, null); - startQuestTimer("despawn_minions", 20000, null, null); - cancelQuestTimers("spawn_minion"); - } - else if ((GrandBossManager.getInstance().getStatus(ORFEN) == ALIVE) && (npc.getId() == RAIKEL_LEOS)) - { - _minions.remove(npc); - startQuestTimer("spawn_minion", 360000, npc, null); } return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/stats/npcs/29000-29099.xml b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/stats/npcs/29000-29099.xml index 37c6dabea4..fb34c27e1b 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/stats/npcs/29000-29099.xml +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/stats/npcs/29000-29099.xml @@ -763,9 +763,6 @@ - - - FAIRY FEMALE diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/db_installer/sql/game/grandboss_data.sql b/L2J_Mobius_Essence_6.2_Vanguard/dist/db_installer/sql/game/grandboss_data.sql index 9ad3ae33ce..b4a1f552fd 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/db_installer/sql/game/grandboss_data.sql +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/db_installer/sql/game/grandboss_data.sql @@ -13,12 +13,12 @@ CREATE TABLE IF NOT EXISTS `grandboss_data` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; INSERT IGNORE INTO `grandboss_data` (`boss_id`,`loc_x`,`loc_y`,`loc_z`,`heading`,`currentHP`,`currentMP`) VALUES -(29001, -21610, 181594, -5734, 0, 229898.48, 667.776), -- Queen Ant +(29001, 93069, 8925, -3904, 0, 229898.48, 667.776), -- Queen Ant (29006, 17726, 108915, -6480, 0, 622493.58388, 3793.536), -- Core -(29014, 55024, 17368, -5412, 10126, 622493.58388, 3793.536), -- Orfen +(29014, 64418, 29467, -3792, 10126, 622493.58388, 3793.536), -- Orfen (29020, 116033, 17447, 10107, -25348, 4068372, 39960), -- Baium (29022, 52207, 217230, -3341, 0, 28531442, 12240), -- Zaken -- (29028, -105200, -253104, -15264, 0, 62041918, 2248572), -- Valakas (29068, 185708, 114298, -8221,32768, 62802301, 1998000); -- Antharas --- (25286, 185080, -12613, -5499, 16550, 556345880, 86847), -- Anakim --- (25283, 185062, -9605, -5499, 15640, 486021997, 79600), -- Lilith +-- (25286, -6675, 18505, -5488, 16550, 556345880, 86847), -- Anakim +-- (25283, 185059, -9610, -5488, 15640, 486021997, 79600), -- Lilith diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java index 24284fbd19..9ade75b6bd 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/ai/bosses/Orfen/Orfen.java @@ -16,14 +16,10 @@ */ package ai.bosses.Orfen; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; -import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.StatSet; @@ -35,8 +31,6 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.GrandBoss; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skill.Skill; -import org.l2jmobius.gameserver.model.skill.SkillCaster; -import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; @@ -44,17 +38,11 @@ import ai.AbstractNpcAI; /** * Orfen's AI - * @author Emperorc + * @author Emperorc, NasSeKa */ public class Orfen extends AbstractNpcAI { - private static final Location[] POS = - { - new Location(43728, 17220, -4342), - new Location(55024, 17368, -5412), - new Location(53504, 21248, -5486), - new Location(53248, 24576, -5262) - }; + private static final Location POS = new Location(64418, 29467, -3792); private static final NpcStringId[] TEXT = { @@ -65,33 +53,15 @@ public class Orfen extends AbstractNpcAI }; private static final int ORFEN = 29014; - // private static final int RAIKEL = 29015; - private static final int RAIKEL_LEOS = 29016; - // private static final int RIBA = 29017; - private static final int RIBA_IREN = 29018; private static final byte ALIVE = 0; private static final byte DEAD = 1; private static final SkillHolder PARALYSIS = new SkillHolder(4064, 1); - private static final SkillHolder BLOW = new SkillHolder(4067, 4); - private static final SkillHolder ORFEN_HEAL = new SkillHolder(4516, 1); - - private static boolean _isTeleported; - private static Set _minions = ConcurrentHashMap.newKeySet(); - private static ZoneType _zone; private Orfen() { - final int[] mobs = - { - ORFEN, - RAIKEL_LEOS, - RIBA_IREN - }; - registerMobs(mobs); - _isTeleported = false; - _zone = ZoneManager.getInstance().getZoneById(12013); + registerMobs(ORFEN); final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); final int status = GrandBossManager.getInstance().getStatus(ORFEN); if (status == DEAD) @@ -107,21 +77,7 @@ public class Orfen extends AbstractNpcAI else { // the time has already expired while the server was offline. Immediately spawn Orfen. - final int i = getRandom(10); - Location loc; - if (i < 4) - { - loc = POS[1]; - } - else if (i < 7) - { - loc = POS[2]; - } - else - { - loc = POS[3]; - } - final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, loc, false, 0); + final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, POS, false, 0); GrandBossManager.getInstance().setStatus(ORFEN, ALIVE); spawnBoss(orfen); } @@ -145,8 +101,8 @@ public class Orfen extends AbstractNpcAI ((Attackable) npc).clearAggroList(); npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null, null); final Spawn spawn = npc.getSpawn(); - spawn.setLocation(POS[index]); - npc.teleToLocation(POS[index], false); + spawn.setLocation(POS); + npc.teleToLocation(POS, false); } public void spawnBoss(GrandBoss npc) @@ -154,23 +110,6 @@ public class Orfen extends AbstractNpcAI GrandBossManager.getInstance().addBoss(npc); npc.broadcastPacket(new PlaySound(1, "BS01_A", 1, npc.getObjectId(), npc.getX(), npc.getY(), npc.getZ())); startQuestTimer("check_orfen_pos", 10000, npc, null, true); - // Spawn minions - final int x = npc.getX(); - final int y = npc.getY(); - Attackable mob; - mob = (Attackable) addSpawn(RAIKEL_LEOS, x + 100, y + 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - mob = (Attackable) addSpawn(RAIKEL_LEOS, x + 100, y - 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - mob = (Attackable) addSpawn(RAIKEL_LEOS, x - 100, y + 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - mob = (Attackable) addSpawn(RAIKEL_LEOS, x - 100, y - 100, npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - startQuestTimer("check_minion_loc", 10000, npc, null, true); } @Override @@ -178,62 +117,10 @@ public class Orfen extends AbstractNpcAI { if (event.equalsIgnoreCase("orfen_unlock")) { - final int i = getRandom(10); - Location loc; - if (i < 4) - { - loc = POS[1]; - } - else if (i < 7) - { - loc = POS[2]; - } - else - { - loc = POS[3]; - } - final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, loc, false, 0); + final GrandBoss orfen = (GrandBoss) addSpawn(ORFEN, POS, false, 0); GrandBossManager.getInstance().setStatus(ORFEN, ALIVE); spawnBoss(orfen); } - else if (event.equalsIgnoreCase("check_orfen_pos")) - { - if ((_isTeleported && (npc.getCurrentHp() > (npc.getMaxHp() * 0.95))) || (!_zone.isInsideZone(npc) && !_isTeleported)) - { - setSpawnPoint(npc, getRandom(3) + 1); - _isTeleported = false; - } - else if (_isTeleported && !_zone.isInsideZone(npc)) - { - setSpawnPoint(npc, 0); - } - } - else if (event.equalsIgnoreCase("check_minion_loc")) - { - for (Attackable mob : _minions) - { - if (!npc.isInsideRadius2D(mob, 3000)) - { - mob.teleToLocation(npc.getLocation()); - ((Attackable) npc).clearAggroList(); - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null, null); - } - } - } - else if (event.equalsIgnoreCase("despawn_minions")) - { - for (Attackable mob : _minions) - { - mob.decayMe(); - } - _minions.clear(); - } - else if (event.equalsIgnoreCase("spawn_minion")) - { - final Attackable mob = (Attackable) addSpawn(RAIKEL_LEOS, npc.getX(), npc.getY(), npc.getZ(), 0, false, 0); - mob.setIsRaidMinion(true); - _minions.add(mob); - } return super.onAdvEvent(event, npc, player); } @@ -254,49 +141,13 @@ public class Orfen extends AbstractNpcAI return super.onSkillSee(npc, caster, skill, targets, isSummon); } - @Override - public String onFactionCall(Npc npc, Npc caller, Player attacker, boolean isSummon) - { - if ((caller == null) || (npc == null) || npc.isCastingNow(SkillCaster::isAnyNormalType)) - { - return super.onFactionCall(npc, caller, attacker, isSummon); - } - final int npcId = npc.getId(); - final int callerId = caller.getId(); - if ((npcId == RAIKEL_LEOS) && (getRandom(20) == 0)) - { - npc.setTarget(attacker); - npc.doCast(BLOW.getSkill()); - } - else if (npcId == RIBA_IREN) - { - int chance = 1; - if (callerId == ORFEN) - { - chance = 9; - } - if ((callerId != RIBA_IREN) && (caller.getCurrentHp() < (caller.getMaxHp() / 2.0)) && (getRandom(10) < chance)) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null, null); - npc.setTarget(caller); - npc.doCast(ORFEN_HEAL.getSkill()); - } - } - return super.onFactionCall(npc, caller, attacker, isSummon); - } - @Override public String onAttack(Npc npc, Player attacker, int damage, boolean isSummon) { final int npcId = npc.getId(); if (npcId == ORFEN) { - if (!_isTeleported && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 4))) - { - _isTeleported = true; - setSpawnPoint(npc, 0); - } - else if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) + if (npc.isInsideRadius2D(attacker, 1000) && !npc.isInsideRadius2D(attacker, 300) && (getRandom(10) == 0)) { npc.broadcastSay(ChatType.NPC_GENERAL, TEXT[getRandom(3)], attacker.getName()); attacker.teleToLocation(npc.getLocation()); @@ -304,14 +155,6 @@ public class Orfen extends AbstractNpcAI npc.doCast(PARALYSIS.getSkill()); } } - else if (npcId == RIBA_IREN) - { - if (!npc.isCastingNow(SkillCaster::isAnyNormalType) && ((npc.getCurrentHp() - damage) < (npc.getMaxHp() / 2.0))) - { - npc.setTarget(attacker); - npc.doCast(ORFEN_HEAL.getSkill()); - } - } return super.onAttack(npc, attacker, damage, isSummon); } @@ -330,15 +173,7 @@ public class Orfen extends AbstractNpcAI final StatSet info = GrandBossManager.getInstance().getStatSet(ORFEN); info.set("respawn_time", System.currentTimeMillis() + respawnTime); GrandBossManager.getInstance().setStatSet(ORFEN, info); - cancelQuestTimer("check_minion_loc", npc, null); cancelQuestTimer("check_orfen_pos", npc, null); - startQuestTimer("despawn_minions", 20000, null, null); - cancelQuestTimers("spawn_minion"); - } - else if ((GrandBossManager.getInstance().getStatus(ORFEN) == ALIVE) && (npc.getId() == RAIKEL_LEOS)) - { - _minions.remove(npc); - startQuestTimer("spawn_minion", 360000, npc, null); } return super.onKill(npc, killer, isSummon); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/stats/npcs/29000-29099.xml b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/stats/npcs/29000-29099.xml index 1c3d3f2805..69898ce31f 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/stats/npcs/29000-29099.xml +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/stats/npcs/29000-29099.xml @@ -763,9 +763,6 @@ - - - FAIRY FEMALE