diff --git a/L2J_DataPack_BETA/dist/game/data/html/doormen/35506-busy.htm b/L2J_DataPack_BETA/dist/game/data/html/doormen/35506-busy.htm deleted file mode 100644 index 8dfc1d2b633d9acbfaab1c22e4cbc2ed38b4915b..0000000000000000000000000000000000000000 --- a/L2J_DataPack_BETA/dist/game/data/html/doormen/35506-busy.htm +++ /dev/null @@ -1,2 +0,0 @@ -<html><body>Oh! Our castle is being attacked and I can't do anything for you right now. -</body></html> \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/html/doormen/35506-no.htm b/L2J_DataPack_BETA/dist/game/data/html/doormen/35506-no.htm deleted file mode 100644 index b7672fca76c4fea721e5e353dad7a185c8e6c9b7..0000000000000000000000000000000000000000 --- a/L2J_DataPack_BETA/dist/game/data/html/doormen/35506-no.htm +++ /dev/null @@ -1,3 +0,0 @@ -<html><body>Who goes there?!<br> -I order you to leave at once! -</body></html> \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/html/doormen/35506.htm b/L2J_DataPack_BETA/dist/game/data/html/doormen/35506.htm deleted file mode 100644 index 3c3bae2cefc8f7ccd9d7e21f5cf004e4c3eb8997..0000000000000000000000000000000000000000 --- a/L2J_DataPack_BETA/dist/game/data/html/doormen/35506.htm +++ /dev/null @@ -1,9 +0,0 @@ -<html><body>Nothing unusual to report my Lord.<br> -What do you wish to do?<br> -<center> -<a action="bypass -h npc_%objectId%_operate_door 1 20160008">Open the Dungeon Gates</a><br> -<a action="bypass -h npc_%objectId%_operate_door 0 20160008">Close the Dungeon Gates</a><br> -<a action="bypass -h npc_%objectId%_operate_door 1 20160001 20160002 20160003 20160004 20160005 20160006">Open All Castle Gates</a><br> -<a action="bypass -h npc_%objectId%_operate_door 0 20160001 20160002 20160003 20160004 20160005 20160006">Close All Castle Gates</a><br> -</center> -</body></html> \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/html/teleporter/29055.htm b/L2J_DataPack_BETA/dist/game/data/html/teleporter/29055.htm deleted file mode 100644 index 3fe91ce58df4a98ccf172e5906a959310ca4a4f7..0000000000000000000000000000000000000000 --- a/L2J_DataPack_BETA/dist/game/data/html/teleporter/29055.htm +++ /dev/null @@ -1,3 +0,0 @@ -<html><body>Teleport Cube:<br> -<a action="bypass -h npc_%objectId%_Quest ToIVortex">Go above Ground</a> -</body></html> \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/html/teleporter/31842.htm b/L2J_DataPack_BETA/dist/game/data/html/teleporter/31842.htm index c936382b36493264e39a27d40527095449764cab..866d1e17f26654a105703bfc91e1bf30c380dc72 100644 --- a/L2J_DataPack_BETA/dist/game/data/html/teleporter/31842.htm +++ b/L2J_DataPack_BETA/dist/game/data/html/teleporter/31842.htm @@ -1,4 +1,4 @@ -<html><body>Teleport Cube:<br> -<a action="bypass -h npc_%objectId%_goto 57" msg="811;the 3rd floor">Return to the 3rd floor.</a><br> -<a action="bypass -h npc_%objectId%_goto 22" msg="811;above ground">Go above ground.</a> +<html><body>Teleportation Cubic:<br> +<a action="bypass -h npc_%objectId%_Quest baium">Return to the surface.</a><br> +<a action="bypass -h npc_%objectId% Quest">Quest.</a> </body></html> \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/scripts.cfg b/L2J_DataPack_BETA/dist/game/data/scripts.cfg index 36b35adc34aba265d52f9e9788cc4a5315064b8a..322f85a950f514379f974b4081f72c105cebac80 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts.cfg +++ b/L2J_DataPack_BETA/dist/game/data/scripts.cfg @@ -72,6 +72,7 @@ ai/individual/Ranku.java ai/individual/SinWardens.java ai/individual/Typhoon.java ai/individual/Valakas.java +ai/individual/Venom/Venom.java ai/individual/Zaken.java # Transformations diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Baium.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Baium.java index 8ffe0fca35d42488e4413c30c11f90eba733b128..e495ee502e8ac826dd1318cac4908e6326f3d2de 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Baium.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Baium.java @@ -68,6 +68,7 @@ public class Baium extends L2AttackableAIScript private static final int ANGELIC_VORTEX = 31862; private static final int LIVE_BAIUM = 29020; private static final int ARCHANGEL = 29021; + private static final int TELEPORT_CUBIC = 31842; // Baium status tracking private static final byte ASLEEP = 0; // baium is in the stone version, waiting to be woken up. Entry is unlocked @@ -99,8 +100,8 @@ public class Baium extends L2AttackableAIScript registerMobs(mob); // Quest NPC starter initialization - addStartNpc(STONE_BAIUM, ANGELIC_VORTEX); - addTalkId(STONE_BAIUM, ANGELIC_VORTEX); + addStartNpc(STONE_BAIUM, ANGELIC_VORTEX, TELEPORT_CUBIC); + addTalkId(STONE_BAIUM, ANGELIC_VORTEX, TELEPORT_CUBIC); _Zone = GrandBossManager.getInstance().getZone(113100, 14500, 10077); StatsSet info = GrandBossManager.getInstance().getStatsSet(LIVE_BAIUM); @@ -348,6 +349,34 @@ public class Baium extends L2AttackableAIScript npc.showChatWindow(player, 1); } } + else if (npc.getNpcId() == TELEPORT_CUBIC) + { + int chance = getRandom(3); + int x, y, z; + + switch (chance) + { + case 0: + x = 108784 + getRandom(100); + y = 16000 + getRandom(100); + z = -4928; + break; + + case 1: + x = 113824 + getRandom(100); + y = 10448 + getRandom(100); + z = -5164; + break; + + default: + x = 115488 + getRandom(100); + y = 22096 + getRandom(100); + z = -5168; + break; + } + + player.teleToLocation(x, y, z); + } return htmltext; } @@ -436,7 +465,7 @@ public class Baium extends L2AttackableAIScript cancelQuestTimer("baium_despawn", npc, null); npc.broadcastPacket(new PlaySound(1, "BS01_D", 1, npc.getObjectId(), npc.getX(), npc.getY(), npc.getZ())); // spawn the "Teleportation Cubic" for 15 minutes (to allow players to exit the lair) - addSpawn(29055, 115203, 16620, 10078, 0, false, 900000); // //should we teleport everyone out if the cubic despawns?? + addSpawn(TELEPORT_CUBIC, 115017, 15549, 10090, 0, false, 900000); // Respawn time is 168 Hours - 48 Random Hours long respawnTime = (long) Config.Interval_Of_Baium_Spawn - getRandom(Config.Random_Of_Baium_Spawn); GrandBossManager.getInstance().setBossStatus(LIVE_BAIUM, DEAD); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Core.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Core.java index 867ef99ed5bb77cb6d9484861180f3baa422ceca..716ba8abd2af96a8f2ec05c22233bf5aef025e2b 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Core.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Core.java @@ -195,8 +195,6 @@ public class Core extends L2AttackableAIScript npc.broadcastPacket(new NpcSay(objId, 0, npcId, NpcStringId.SYSTEM_IS_BEING_SHUT_DOWN)); npc.broadcastPacket(new NpcSay(objId, 0, npcId, NpcStringId.DOT_DOT_DOT_DOT_DOT_DOT)); _FirstAttacked = false; - addSpawn(31842, 16502, 110165, -6394, 0, false, 900000); - addSpawn(31842, 18948, 110166, -6397, 0, false, 900000); GrandBossManager.getInstance().setBossStatus(CORE, DEAD); // Respawn time is 60 Hours - 24 Random Hours long respawnTime = (long) Config.Interval_Of_Core_Spawn - getRandom(Config.Random_Of_Core_Spawn); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/29055.html b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/29055.html new file mode 100644 index 0000000000000000000000000000000000000000..2a39eb2a9f7ea5d7c53041b28cb4c5e96d9e6bae --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/29055.html @@ -0,0 +1,3 @@ +<html><body>Teleportation Cubic:<br> +<a action="bypass -h npc_%objectId%_Quest Venom">Leave the prison.</a><br> +</body></html> \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/35506-02.html b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/35506-02.html new file mode 100644 index 0000000000000000000000000000000000000000..b8528b8653aa4233d87d2fa292506592dc246e93 --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/35506-02.html @@ -0,0 +1,3 @@ +<html><body> +When attacking a castle, its defenses can easily be paralyzed.... What if that demon escapes? +</body></html> \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/35506.html b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/35506.html new file mode 100644 index 0000000000000000000000000000000000000000..55b1b2506598c3dd11c251639008a9ec9fd3a681 --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/35506.html @@ -0,0 +1,4 @@ +<html><body> +The roar of that scary demon in the dungeon always makes me want to run away! I know the dungeon is well-built, but if its defenses are broken, it could collapse!<br><p> +<a action="bypass -h npc_%objectId%_Quest Venom">Teleport to the dungeon</a> +</body></html> \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/Venom.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/Venom.java new file mode 100644 index 0000000000000000000000000000000000000000..4986c5e505765e372afa104f30ae1ae26c2f80cc --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/Venom.java @@ -0,0 +1,432 @@ +/* + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. + */ +package ai.individual.Venom; + +import javolution.util.FastList; +import ai.npc.AbstractNpcAI; + +import com.l2jserver.gameserver.ai.CtrlIntention; +import com.l2jserver.gameserver.datatables.SpawnTable; +import com.l2jserver.gameserver.instancemanager.CastleManager; +import com.l2jserver.gameserver.instancemanager.GlobalVariablesManager; +import com.l2jserver.gameserver.instancemanager.MapRegionManager; +import com.l2jserver.gameserver.model.L2Spawn; +import com.l2jserver.gameserver.model.Location; +import com.l2jserver.gameserver.model.actor.L2Attackable; +import com.l2jserver.gameserver.model.actor.L2Character; +import com.l2jserver.gameserver.model.actor.L2Npc; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.model.holders.SkillHolder; +import com.l2jserver.gameserver.model.skills.L2Skill; +import com.l2jserver.gameserver.network.NpcStringId; +import com.l2jserver.gameserver.network.clientpackets.Say2; +import com.l2jserver.gameserver.scripting.scriptengine.events.SiegeEvent; + +/** + * Venom AI on Rune Castle. + * @author nonom, MELERIX + */ +public final class Venom extends AbstractNpcAI +{ + private static final int CASTLE = 8; // Rune + + private static final int VENOM = 29054; + private static final int TELEPORT_CUBE = 29055; + private static final int DUNGEON_KEEPER = 35506; + + private static final byte ALIVE = 0; + private static final byte DEAD = 1; + + private static final int HOURS_BEFORE = 24; + + private static final Location[] TARGET_TELEPORTS = + { + new Location(12860, -49158, 976), + new Location(14878, -51339, 1024), + new Location(15674, -49970, 864), + new Location(15696, -48326, 864), + new Location(14873, -46956, 1024), + new Location(12157, -49135, -1088), + new Location(12875, -46392, -288), + new Location(14087, -46706, -288), + new Location(14086, -51593, -288), + new Location(12864, -51898, -288), + new Location(15538, -49153, -1056), + new Location(17001, -49149, -1064) + }; + + private static final Location TRHONE = new Location(11025, -49152, -537); + private static final Location DUNGEON = new Location(11882, -49216, -3008); + private static final Location TELEPORT = new Location(12589, -49044, -3008); + private static final Location CUBE = new Location(12047, -49211, -3009); + + private static final SkillHolder VENOM_STRIKE = new SkillHolder(4993, 1); + private static final SkillHolder SONIC_STORM = new SkillHolder(4994, 1); + private static final SkillHolder VENOM_TELEPORT = new SkillHolder(4995, 1); + private static final SkillHolder RANGE_TELEPORT = new SkillHolder(4996, 1); + + private L2Npc _venom; + private L2Npc _massymore; + + private int _venomX; + private int _venomY; + private int _venomZ; + + private boolean _aggroMode = false; + private boolean _prisonIsOpen = false; + + // @formatter:off + private static final int[] TARGET_TELEPORTS_OFFSET = + { + 650, 100, 100, 100, 100, 650, 200, 200, 200, 200, 200, 650 + }; + // @formatter:on + + private static FastList<L2PcInstance> _targets = new FastList<>(); + + public Venom(String name, String descr) + { + super(name, descr); + + addStartNpc(DUNGEON_KEEPER, TELEPORT_CUBE); + addFirstTalkId(DUNGEON_KEEPER, TELEPORT_CUBE); + addTalkId(DUNGEON_KEEPER, TELEPORT_CUBE); + addSpawnId(VENOM); + addSpellFinishedId(VENOM); + addAttackId(VENOM); + addKillId(VENOM); + addAggroRangeEnterId(VENOM); + addSiegeNotify(); + + for (L2Spawn spawn : SpawnTable.getInstance().getSpawnTable()) + { + + switch (spawn.getNpcid()) + { + case DUNGEON_KEEPER: + _massymore = spawn.getLastSpawn(); + break; + case VENOM: + _venom = spawn.getLastSpawn(); + _venomX = _venom.getX(); + _venomY = _venom.getY(); + _venomZ = _venom.getZ(); + _venom.disableSkill(VENOM_TELEPORT.getSkill(), 0); + _venom.disableSkill(RANGE_TELEPORT.getSkill(), 0); + _venom.doRevive(); + ((L2Attackable) _venom).setCanReturnToSpawnPoint(false); + if (checkStatus() == DEAD) + { + _venom.deleteMe(); + } + break; + } + } + + final long currentTime = System.currentTimeMillis(); + final long startSiegeDate = CastleManager.getInstance().getCastleById(CASTLE).getSiegeDate().getTimeInMillis(); + final long openingDungeonDate = startSiegeDate - (HOURS_BEFORE * 360000); + + if ((currentTime > openingDungeonDate) && (currentTime < startSiegeDate)) + { + _prisonIsOpen = true; + } + } + + @Override + public String onTalk(L2Npc npc, L2PcInstance talker) + { + switch (npc.getNpcId()) + { + case TELEPORT_CUBE: + { + talker.teleToLocation(MapRegionManager.TeleportWhereType.Town); + break; + } + case DUNGEON_KEEPER: + { + if (_prisonIsOpen) + { + talker.teleToLocation(TELEPORT, 0); + } + else + { + return "35506-02.html"; + } + break; + } + } + return super.onTalk(npc, talker); + } + + @Override + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) + { + switch (event) + { + case "tower_check": + if (CastleManager.getInstance().getCastleById(CASTLE).getSiege().getControlTowerCount() <= 1) + { + changeLocation(MoveTo.THRONE); + broadcastNpcSay(_massymore, Say2.SHOUT, NpcStringId.OH_NO_THE_DEFENSES_HAVE_FAILED_IT_IS_TOO_DANGEROUS_TO_REMAIN_INSIDE_THE_CASTLE_FLEE_EVERY_MAN_FOR_HIMSELF); + cancelQuestTimer("tower_check", npc, null); + startQuestTimer("raid_check", 10000, npc, null, true); + } + break; + case "raid_check": + if (!npc.isInsideZone(L2Character.ZONE_SIEGE) && !npc.isTeleporting()) + { + npc.teleToLocation(new Location(_venomX, _venomY, _venomZ), false); + } + break; + case "cube_despawn": + if (npc != null) + { + npc.deleteMe(); + } + break; + } + return event; + } + + @Override + public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isPet) + { + if (isPet) + { + return super.onAggroRangeEnter(npc, player, isPet); + } + + if (_aggroMode && (_targets.size() < 10) && (getRandom(3) < 1) && !player.isDead()) + { + _targets.add(player); + } + return super.onAggroRangeEnter(npc, player, isPet); + } + + @Override + public boolean onSiegeEvent(SiegeEvent event) + { + if (event.getSiege().getCastle().getCastleId() == CASTLE) + { + if (event.getSiege().getCastle().getIsTimeRegistrationOver() && !event.getSiege().getAttackerClans().isEmpty()) + { + _prisonIsOpen = true; + changeLocation(MoveTo.PRISON); + } + + switch (event.getStage()) + { + case START: + _aggroMode = true; + _prisonIsOpen = false; + if ((_venom != null) && !_venom.isDead()) + { + _venom.setCurrentHp(_venom.getMaxHp()); + _venom.setCurrentMp(_venom.getMaxMp()); + _venom.enableSkill(VENOM_TELEPORT.getSkill()); + _venom.enableSkill(RANGE_TELEPORT.getSkill()); + startQuestTimer("tower_check", 30000, _venom, null, true); + } + break; + case END: + _aggroMode = false; + if ((_venom != null) && !_venom.isDead()) + { + changeLocation(MoveTo.PRISON); + _venom.disableSkill(VENOM_TELEPORT.getSkill(), 0); + _venom.disableSkill(RANGE_TELEPORT.getSkill(), 0); + } + updateStatus(ALIVE); + cancelQuestTimer("tower_check", _venom, null); + cancelQuestTimer("raid_check", _venom, null); + break; + } + } + return true; + } + + @Override + public String onSpellFinished(L2Npc npc, L2PcInstance player, L2Skill skill) + { + switch (skill.getId()) + { + case 4222: + npc.teleToLocation(new Location(_venomX, _venomY, _venomZ), false); + break; + case 4995: + teleportTarget(player); + ((L2Attackable) npc).stopHating(player); + break; + case 4996: + teleportTarget(player); + ((L2Attackable) npc).stopHating(player); + if ((_targets != null) && (_targets.size() > 0)) + { + for (L2PcInstance target : _targets) + { + final long x = player.getX() - target.getX(); + final long y = player.getY() - target.getY(); + final long z = player.getZ() - target.getZ(); + final long range = 250; + if (((x * x) + (y * y) + (z * z)) <= (range * range)) + { + teleportTarget(target); + ((L2Attackable) npc).stopHating(target); + } + } + _targets.clear(); + } + break; + } + return super.onSpellFinished(npc, player, skill); + } + + @Override + public final String onSpawn(L2Npc npc) + { + if (!npc.isTeleporting()) + { + if (checkStatus() == DEAD) + { + npc.deleteMe(); + } + else + { + npc.doRevive(); + broadcastNpcSay(npc, Say2.SHOUT, NpcStringId.WHO_DARES_TO_COVET_THE_THRONE_OF_OUR_CASTLE_LEAVE_IMMEDIATELY_OR_YOU_WILL_PAY_THE_PRICE_OF_YOUR_AUDACITY_WITH_YOUR_VERY_OWN_BLOOD); + } + } + return super.onSpawn(npc); + } + + @Override + public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isPet) + { + final double distance = Math.sqrt(npc.getPlanDistanceSq(attacker.getX(), attacker.getY())); + if (_aggroMode && (getRandom(100) < 25)) + { + npc.setTarget(attacker); + npc.doCast(VENOM_TELEPORT.getSkill()); + } + else if (_aggroMode && (npc.getCurrentHp() < (npc.getMaxHp() / 3)) && (getRandom(100) < 25) && !npc.isCastingNow()) + { + npc.setTarget(attacker); + npc.doCast(RANGE_TELEPORT.getSkill()); + } + else if ((distance > 300) && (getRandom(100) < 10) && !npc.isCastingNow()) + { + npc.setTarget(attacker); + npc.doCast(VENOM_STRIKE.getSkill()); + } + else if ((getRandom(100) < 10) && !npc.isCastingNow()) + { + npc.setTarget(attacker); + npc.doCast(SONIC_STORM.getSkill()); + } + return super.onAttack(npc, attacker, damage, isPet); + } + + @Override + public String onKill(L2Npc npc, L2PcInstance killer, boolean isPet) + { + updateStatus(DEAD); + broadcastNpcSay(npc, Say2.SHOUT, NpcStringId.ITS_NOT_OVER_YET_IT_WONT_BE_OVER_LIKE_THIS_NEVER); + if (!CastleManager.getInstance().getCastleById(CASTLE).getSiege().getIsInProgress()) + { + L2Npc cube = addSpawn(TELEPORT_CUBE, CUBE, false, 0); + startQuestTimer("cube_despawn", 120000, cube, null); + } + cancelQuestTimer("raid_check", npc, null); + return super.onKill(npc, killer, isPet); + } + + /** + * Alters the Venom location + * @param loc enum + */ + private void changeLocation(MoveTo loc) + { + switch (loc) + { + case THRONE: + _venom.teleToLocation(TRHONE, false); + break; + case PRISON: + if ((_venom == null) || _venom.isDead() || _venom.isDecayed()) + { + _venom = addSpawn(VENOM, DUNGEON, false, 0); + } + else + { + _venom.teleToLocation(DUNGEON, false); + } + cancelQuestTimer("raid_check", _venom, null); + cancelQuestTimer("tower_check", _venom, null); + break; + } + _venomX = _venom.getX(); + _venomY = _venom.getY(); + _venomZ = _venom.getZ(); + } + + private void teleportTarget(L2PcInstance player) + { + if ((player != null) && !player.isDead()) + { + final int rnd = getRandom(11); + player.teleToLocation(TARGET_TELEPORTS[rnd], TARGET_TELEPORTS_OFFSET[rnd]); + player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); + } + } + + /** + * Checks if Venom is Alive or Dead + * @return status + */ + private int checkStatus() + { + int checkStatus = ALIVE; + if (GlobalVariablesManager.getInstance().isVariableStored("VenomStatus")) + { + checkStatus = Integer.parseInt(GlobalVariablesManager.getInstance().getStoredVariable("VenomStatus")); + } + else + { + GlobalVariablesManager.getInstance().storeVariable("VenomStatus", "0"); + } + return checkStatus; + } + + /** + * Update the Venom status + * @param status the new status. 0 = ALIVE, 1 = DEAD. + */ + private void updateStatus(int status) + { + GlobalVariablesManager.getInstance().storeVariable("VenomStatus", Integer.toString(status)); + } + + private enum MoveTo + { + THRONE, + PRISON + } + + public static void main(String[] args) + { + new Venom(Venom.class.getSimpleName(), "ai/individual"); + } +} diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/teleports/ToIVortex/ToIVortex.java b/L2J_DataPack_BETA/dist/game/data/scripts/teleports/ToIVortex/ToIVortex.java index 25d99df40a33150b0b452be56a907955f59e8de8..c172c294adaa3f7301270ecd81c7899c22fd75ab 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/teleports/ToIVortex/ToIVortex.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/teleports/ToIVortex/ToIVortex.java @@ -33,7 +33,6 @@ public class ToIVortex extends Quest private static final int DIMENSION_VORTEX_1 = 30952; private static final int DIMENSION_VORTEX_2 = 30953; private static final int DIMENSION_VORTEX_3 = 30954; - private static final int TELEPORT_CUBIC = 29055; // ITEMS private static final int ADENA = 57; @@ -243,49 +242,6 @@ public class ToIVortex extends Quest return htmltext; } - @Override - public String onTalk(L2Npc npc, L2PcInstance player) - { - String htmltext = ""; - QuestState st = player.getQuestState(getName()); - - if (st == null) - return null; - - // ToI Vortex exit - if (npc.getNpcId() == TELEPORT_CUBIC) - { - int chance = getRandom(3); - int x, y, z; - - switch (chance) - { - case 0: - x = 108784 + getRandom(100); - y = 16000 + getRandom(100); - z = -4928; - break; - - case 1: - x = 113824 + getRandom(100); - y = 10448 + getRandom(100); - z = -5164; - break; - - default: - x = 115488 + getRandom(100); - y = 22096 + getRandom(100); - z = -5168; - break; - } - - player.teleToLocation(x, y, z); - st.exitQuest(true); - } - - return htmltext; - } - public ToIVortex(int questId, String name, String descr) { super(questId, name, descr); @@ -302,8 +258,6 @@ public class ToIVortex extends Quest addTalkId(DIMENSION_VORTEX_2); addStartNpc(DIMENSION_VORTEX_3); addTalkId(DIMENSION_VORTEX_3); - addStartNpc(TELEPORT_CUBIC); - addTalkId(TELEPORT_CUBIC); } public static void main(String[] args) diff --git a/L2J_DataPack_BETA/dist/sql/game/npc.sql b/L2J_DataPack_BETA/dist/sql/game/npc.sql index 0845fe092060916a332c6c0ba6ea3856a1c91dab..c34083d78da779cdb37a9bd3382d6ee4ac14ce7b 100644 --- a/L2J_DataPack_BETA/dist/sql/game/npc.sql +++ b/L2J_DataPack_BETA/dist/sql/game/npc.sql @@ -6205,7 +6205,7 @@ INSERT INTO `npc` VALUES (29052, 29052, "", 0, "", 0, "LineageMonster3.Organ_Dummy", 1, 35, 85, "female", "L2Monster", 40, 3960.034064, 2056.828841, 8.585, 3.03, 40, 43, 30, 21, 20, 20, 0, 0, 1216.23929, 3864.96881, 838.83911, 2826.63526, 253, 4, 333, 0, 0, 0, 10, 1, 0, 1), (29053, 29053, "", 0, "", 0, "LineageMonster3.Follower_Dummy", 1, 58, 85, "female", "L2Monster", 40, 5448.837225, 2036.464199, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 1456.32495, 383.42192, 994.48116, 280.57152, 253, 4, 333, 0, 0, 0, 10, 1, 0, 1), (29054, 29054, "Benom", 0, "Triol's Leader", 0, "LineageMonster3.benom", 20, 56, 75, "male", "L2RaidBoss", 40, 568382.4, 4071.06, 357, 8.1, 60, 57, 73, 76, 70, 80, 2499951, 1757872, 4510, 2554, 3279, 467.22, 253, 4, 333, 8203, 8203, 0, 79, 220, 0, 1), -(29055, 29055, "Teleportation Cubic", 0, "", 0, "LineageNPC.teleport_npc", 40, 80, 70, "etc", "L2Teleporter", 40, 2444.46819, 1345.8, 7.5, 2.7, 40, 43, 30, 21, 20, 20, 0, 0, 688.86373, 295.91597, 470.40463, 216.53847, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), +(29055, 29055, "Teleportation Cubic", 0, "", 0, "LineageNPC.teleport_npc", 40, 80, 70, "etc", "L2Npc", 40, 2444.46819, 1345.8, 7.5, 2.7, 40, 43, 30, 21, 20, 20, 0, 0, 688.86373, 295.91597, 470.40463, 216.53847, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), (29056, 29056, "Ice Fairy Sirra", 0, "Raid Boss", 0, "LineageMonster3.ice_fairy", 16, 35.6, 60, "female", "L2RaidBoss", 40, 79149.92, 1036.8, 147.557641, 2.4, 60, 57, 73, 76, 70, 80, 1610848, 371722, 1277.93618, 1981.2, 434.60179, 362.44, 253, 4, 333, 0, 0, 0, 30, 190, 0, 1), (29057, 29057, "Sirra's Page", 0, "Raid Fighter", 0, "LineageMonster.sylph_110p", 12, 39.7, 59, "female", "L2Monster", 40, 7721.463, 1007, 57.96894, 2.4, 40, 43, 30, 21, 20, 20, 0, 0, 1181.243, 971.28, 386.9314, 355.36, 253, 1, 333, 0, 0, 0, 60, 190, 0, 1), (29058, 29058, "Sirra's Beholder", 0, "Raid Fighter", 0, "LineageMonster.field_stalker_20_bi", 18, 36, 59, "male", "L2Monster", 40, 3860.731, 1007, 57.96894, 2.4, 40, 43, 30, 21, 20, 20, 0, 0, 1181.241, 971.28, 386.9314, 355.36, 253, 4, 333, 0, 0, 0, 70, 190, 0, 1), @@ -9418,7 +9418,7 @@ INSERT INTO `npc` VALUES (35503, 35503, "Outer Doorman", 0, "Rune", 0, "LineageNPC.e_elmore_guard_Mhuman", 8, 23.5, 75, "male", "L2CastleDoormen", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), (35504, 35504, "Inner Doorman", 0, "Rune", 0, "LineageNPC.e_elmore_guard_Mhuman", 8, 23.5, 75, "male", "L2CastleDoormen", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), (35505, 35505, "Inner Doorman", 0, "Rune", 0, "LineageNPC.e_elmore_guard_Mhuman", 8, 23.5, 75, "male", "L2CastleDoormen", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), -(35506, 35506, "Dungeon Gatekeeper", 0, "Rune", 0, "LineageNPC.e_elmore_guard_Mhuman", 8, 23.5, 75, "male", "L2CastleDoormen", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), +(35506, 35506, "Dungeon Gatekeeper", 0, "Rune", 0, "LineageNPC.e_elmore_guard_Mhuman", 8, 23.5, 75, "male", "L2Npc", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), (35507, 35507, "Blacksmith", 0, "Rune", 0, "LineageNPC.a_smith_MDwarf", 7, 16.5, 75, "male", "L2CastleBlacksmith", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 89, 0, 0, 50, 120, 0, 1), (35508, 35508, "Warehouse Keeper", 0, "Rune", 0, "LineageNPC.a_warehouse_keeper_MDwarf", 8, 17, 75, "male", "L2CastleWarehouse", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), (35509, 35509, "Frederick", 0, "Chamberlain", 0, "LineageNPC.a_chamberlain_MHuman", 9.5, 22.5, 75, "male", "L2CastleChamberlain", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), diff --git a/L2J_DataPack_BETA/dist/sql/game/npcaidata.sql b/L2J_DataPack_BETA/dist/sql/game/npcaidata.sql index 02630e3a860498b82f832073034bde7467429fae..355fb2a420ada8229fe6f71534f29941861e6550 100644 --- a/L2J_DataPack_BETA/dist/sql/game/npcaidata.sql +++ b/L2J_DataPack_BETA/dist/sql/game/npcaidata.sql @@ -6189,7 +6189,7 @@ INSERT INTO `npcaidata` VALUES (29051, 7, 15, 0, 1500, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2000, 0, "frintessa_clan", 2000, "null", 0, 0, "balanced"), -- Breath of Halisha (29052, 7, 15, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "frintessa_clan", 0, "null", 0, 0, "balanced"), -- (29053, 7, 15, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "frintessa_clan", 0, "null", 0, 0, "balanced"), -- -(29054, 7, 15, 0, 1000, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, "null", 0, "null", 0, 0, "fighter"), -- Benom +(29054, 7, 15, 0, 1000, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, "null", 0, "null", 0, 0, "fighter"), -- Benom (29055, 7, 15, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "null", 300, "null", 0, 0, "balanced"), -- Teleportation Cubic (29056, 7, 15, 0, 1000, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 500, 0, "ice_clan", 300, "null", 0, 0, "balanced"), -- Ice Fairy Sirra (29057, 7, 15, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "ice_clan", 300, "null", 0, 0, "balanced"), -- Sirra's Page