From 7d7081c138c201704ced835f690c622365daf2da Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sun, 19 Jan 2020 11:08:39 +0000 Subject: [PATCH] Updated Primeval Island and added missing spawns to Storm Island. Contributed by Edoo. --- .../dist/game/data/html/default/34527.htm | 3 + .../dist/game/data/html/teleporter/34526.htm | 8 + .../ElrokiTeleporters/32111-no.html | 3 - .../PrimevalIsle/ElrokiTeleporters/32111.html | 6 - .../ElrokiTeleporters/32112-no.html | 3 - .../PrimevalIsle/ElrokiTeleporters/32112.html | 5 - .../ElrokiTeleporters/ElrokiTeleporters.java | 63 -- .../ai/areas/PrimevalIsle/PrimevalIsle.java | 500 ---------- .../data/spawns/LimitedZones/PrimevalIsle.xml | 897 ++++++++++++++++++ .../data/spawns/LimitedZones/StormIsle.xml | 16 + .../game/data/spawns/Rune/PrimevalIsle.xml | 570 ----------- .../dist/game/data/stats/npcs/34500-34599.xml | 2 +- .../data/teleporters/others/PrimevalIsle.xml | 7 +- 13 files changed, 930 insertions(+), 1153 deletions(-) create mode 100644 L2J_Mobius_7.0_PreludeOfWar/dist/game/data/html/default/34527.htm create mode 100644 L2J_Mobius_7.0_PreludeOfWar/dist/game/data/html/teleporter/34526.htm delete mode 100644 L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32111-no.html delete mode 100644 L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32111.html delete mode 100644 L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32112-no.html delete mode 100644 L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32112.html delete mode 100644 L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/ElrokiTeleporters.java delete mode 100644 L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/PrimevalIsle.java create mode 100644 L2J_Mobius_7.0_PreludeOfWar/dist/game/data/spawns/LimitedZones/PrimevalIsle.xml delete mode 100644 L2J_Mobius_7.0_PreludeOfWar/dist/game/data/spawns/Rune/PrimevalIsle.xml diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/html/default/34527.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/html/default/34527.htm new file mode 100644 index 0000000000..66600b6eaf --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/html/default/34527.htm @@ -0,0 +1,3 @@ +Expedition Guard:
+There are many dangerous monsters outside the camps. Don't let your guard down. + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/html/teleporter/34526.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/html/teleporter/34526.htm new file mode 100644 index 0000000000..c03d419d61 --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/html/teleporter/34526.htm @@ -0,0 +1,8 @@ +Expedition Teleporter:
+We will safely send you to our camps.
+Where would you like to go?
+ + + + + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32111-no.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32111-no.html deleted file mode 100644 index a1f89b79ec..0000000000 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32111-no.html +++ /dev/null @@ -1,3 +0,0 @@ -Orahochin:
-Oh ho -- you have sought me out while battling the dinosaurs, have you? And now you ask me to teleport you to that place? That island was created as as a sanctuary; it is my duty is to protect its inhabitants from external harm. I certainly have no intention of making that place a refuge for reckless adventurers! It is my policy not to teleport any who are engaged in battle, so return after the battle has ended. - \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32111.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32111.html deleted file mode 100644 index d2dc1a7910..0000000000 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32111.html +++ /dev/null @@ -1,6 +0,0 @@ -Orahochin:
-Welcome! I am Orahochin, proud warrior of the Elroki tribe! I was sent here to guard this place. In truth, I guard the hope and future of the tribe itself. You don't understand? Ah, my young friend, I hope your feet are quicker than your wits! Ha ha!
-See the island over there? There you will find a village of innocent, peaceful Elroki natives. They are far different than the degraded Elrokhians you find here, that I can assure you.
-To protect them, I will transport only those to the island that mean them no harm. Ah... You don't seem like the dangerous sort -- I will teleport you to the island if you wish.
- - \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32112-no.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32112-no.html deleted file mode 100644 index 685b7f70af..0000000000 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32112-no.html +++ /dev/null @@ -1,3 +0,0 @@ -Gariachin:
-Oh, no! This is not good, not good at all. My sincerest apologies -- I cannot tell you what happened in detail -- but I cannot teleport you to your destination at the moment. I'm terribly sorry for the inconvenience. - \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32112.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32112.html deleted file mode 100644 index b7af765dd9..0000000000 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/32112.html +++ /dev/null @@ -1,5 +0,0 @@ -Gariachin:
-Welcome! I am Gariachin. I am entrusted with the teleportation of visitors to this island. It may sound strange to you, but I've come to love this island and respect its people. It is a precious place, housing the hope, wisdom and future of the Elroki tribe.
-I will transport you to the southern beach of the Primeval Plains. If you have the chance, will you send my regards to my friend, Orahochin?
- - \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/ElrokiTeleporters.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/ElrokiTeleporters.java deleted file mode 100644 index 5391ddc5db..0000000000 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/ElrokiTeleporters/ElrokiTeleporters.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package ai.areas.PrimevalIsle.ElrokiTeleporters; - -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -import ai.AbstractNpcAI; - -/** - * Elroki teleport AI. - * @author Plim - */ -public class ElrokiTeleporters extends AbstractNpcAI -{ - // NPCs - private static final int ORAHOCHIN = 32111; - private static final int GARIACHIN = 32112; - // Locations - private static final Location TELEPORT_ORAHOCIN = new Location(4990, -1879, -3178); - private static final Location TELEPORT_GARIACHIN = new Location(7557, -5513, -3221); - - private ElrokiTeleporters() - { - addFirstTalkId(ORAHOCHIN, GARIACHIN); - addStartNpc(ORAHOCHIN, GARIACHIN); - addTalkId(ORAHOCHIN, GARIACHIN); - } - - @Override - public String onTalk(Npc npc, PlayerInstance talker) - { - if (!talker.isInCombat()) - { - talker.teleToLocation((npc.getId() == ORAHOCHIN) ? TELEPORT_ORAHOCIN : TELEPORT_GARIACHIN); - } - else - { - return npc.getId() + "-no.html"; - } - return super.onTalk(npc, talker); - } - - public static void main(String[] args) - { - new ElrokiTeleporters(); - } -} \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/PrimevalIsle.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/PrimevalIsle.java deleted file mode 100644 index 626ab27ef4..0000000000 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/PrimevalIsle/PrimevalIsle.java +++ /dev/null @@ -1,500 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package ai.areas.PrimevalIsle; - -import org.l2jmobius.commons.util.CommonUtil; -import org.l2jmobius.gameserver.ai.CtrlIntention; -import org.l2jmobius.gameserver.enums.ChatType; -import org.l2jmobius.gameserver.geoengine.GeoEngine; -import org.l2jmobius.gameserver.handler.IItemHandler; -import org.l2jmobius.gameserver.handler.ItemHandler; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Attackable; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Playable; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.items.instance.ItemInstance; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.network.NpcStringId; -import org.l2jmobius.gameserver.util.Util; - -import ai.AbstractNpcAI; - -/** - * Primeval Isle AI. - * @author St3eT - */ -public class PrimevalIsle extends AbstractNpcAI -{ - // NPC - private static final int EGG = 18344; // Ancient Egg - private static final int SAILREN = 29065; // Sailren - private static final int ORNIT = 22742; // Ornithomimus - private static final int DEINO = 22743; // Deinonychus - private static final int[] SPRIGNANT = - { - 18345, // Sprigant (Anesthesia) - 18346, // Sprigant (Deadly Poison) - }; - private static final int[] MONSTERS = - { - 22196, // Velociraptor - 22198, // Velociraptor - 22200, // Ornithomimus - 22202, // Ornithomimus - 22203, // Deinonychus - 22205, // Deinonychus - 22208, // Pachycephalosaurus - 22210, // Pachycephalosaurus - 22211, // Wild Strider - 22213, // Wild Strider - 22223, // Velociraptor - 22224, // Ornithomimus - 22225, // Deinonychus - 22226, // Pachycephalosaurus - 22227, // Wild Strider - 22742, // Ornithomimus - 22743, // Deinonychus - }; - private static final int[] TREX = - { - 22215, // Tyrannosaurus - 22216, // Tyrannosaurus - 22217, // Tyrannosaurus - }; - private static final int[] VEGETABLE = - { - 22200, // Ornithomimus - 22201, // Ornithomimus - 22202, // Ornithomimus - 22203, // Deinonychus - 22204, // Deinonychus - 22205, // Deinonychus - 22224, // Ornithomimus - 22225, // Deinonychus - }; - // Item - private static final int DEINONYCHUS = 14828; // Deinonychus Mesozoic Stone - // Skill - private static final SkillHolder ANESTHESIA = new SkillHolder(5085, 1); // Anesthesia - private static final SkillHolder DEADLY_POISON = new SkillHolder(5086, 1); // Deadly Poison - private static final SkillHolder SELFBUFF1 = new SkillHolder(5087, 1); // Berserk - private static final SkillHolder SELFBUFF2 = new SkillHolder(5087, 2); // Berserk - private static final SkillHolder LONGRANGEDMAGIC1 = new SkillHolder(5120, 1); // Stun - private static final SkillHolder PHYSICALSPECIAL1 = new SkillHolder(5083, 4); // Stun - private static final SkillHolder PHYSICALSPECIAL2 = new SkillHolder(5081, 4); // Silence - private static final SkillHolder PHYSICALSPECIAL3 = new SkillHolder(5082, 4); // NPC Spinning, Slashing Trick - private static final SkillHolder CREW_SKILL = new SkillHolder(6172, 1); // Presentation - Tyranno - private static final SkillHolder INVIN_BUFF_ON = new SkillHolder(5225, 1); // Invincible - - private PrimevalIsle() - { - addSpawnId(TREX); - addSpawnId(SPRIGNANT); - addSpawnId(MONSTERS); - addAggroRangeEnterId(TREX); - addSpellFinishedId(TREX); - addAttackId(EGG); - addAttackId(TREX); - addAttackId(MONSTERS); - addKillId(EGG, SAILREN, DEINO, ORNIT); - addSeeCreatureId(TREX); - addSeeCreatureId(MONSTERS); - } - - @Override - public String onSpellFinished(Npc npc, PlayerInstance player, Skill skill) - { - if (skill.getId() == CREW_SKILL.getSkillId()) - { - startQuestTimer("START_INVUL", 4000, npc, null); - final Npc target = (Npc) npc.getTarget(); - if (target != null) - { - target.doDie(npc); - } - } - if (npc.isInCombat()) - { - final Attackable mob = (Attackable) npc; - final Creature target = mob.getMostHated(); - if (((npc.getCurrentHp() / npc.getMaxHp()) * 100) < 60) - { - if (skill.getId() == SELFBUFF1.getSkillId()) - { - npc.setScriptValue(3); - if ((target != null)) - { - npc.setTarget(target); - mob.setRunning(); - mob.addDamageHate(target, 0, 555); - mob.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); - } - } - } - else if (((npc.getCurrentHp() / npc.getMaxHp()) * 100) < 30) - { - if (skill.getId() == SELFBUFF1.getSkillId()) - { - npc.setScriptValue(1); - if ((target != null)) - { - npc.setTarget(target); - mob.setRunning(); - mob.addDamageHate(target, 0, 555); - mob.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); - } - } - else if (skill.getId() == SELFBUFF2.getSkillId()) - { - npc.setScriptValue(5); - if ((target != null)) - { - npc.setTarget(target); - mob.setRunning(); - mob.addDamageHate(target, 0, 555); - mob.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); - } - } - } - } - return super.onSpellFinished(npc, player, skill); - } - - @Override - public String onAdvEvent(String event, Npc npc, PlayerInstance player) - { - switch (event) - { - case "USE_SKILL": - { - if ((npc != null) && !npc.isDead()) - { - npc.doCast((npc.getId() == SPRIGNANT[0] ? ANESTHESIA.getSkill() : DEADLY_POISON.getSkill())); - startQuestTimer("USE_SKILL", 15000, npc, null); - } - break; - } - case "GHOST_DESPAWN": - { - if ((npc != null) && !npc.isDead()) - { - if (!npc.isInCombat()) - { - npc.deleteMe(); - } - else - { - startQuestTimer("GHOST_DESPAWN", 1800000, npc, null); - } - } - break; - } - case "TREX_ATTACK": - { - if ((npc != null) && (player != null)) - { - npc.setScriptValue(0); - if (player.isInsideRadius3D(npc, 800)) - { - npc.setTarget(player); - npc.doCast(LONGRANGEDMAGIC1.getSkill()); - addAttackPlayerDesire(npc, player); - } - } - break; - } - case "START_INVUL": - { - if ((npc != null) && !npc.isDead()) - { - npc.doCast(INVIN_BUFF_ON.getSkill()); - startQuestTimer("START_INVUL_2", 30000, npc, null); - } - break; - } - case "START_INVUL_2": - { - if ((npc != null) && !npc.isDead()) - { - INVIN_BUFF_ON.getSkill().applyEffects(npc, npc); - } - break; - } - } - return super.onAdvEvent(event, npc, player); - } - - @Override - public String onSeeCreature(Npc npc, Creature creature, boolean isSummon) - { - if (CommonUtil.contains(MONSTERS, npc.getId())) - { - if (creature.isPlayer()) - { - final Attackable mob = (Attackable) npc; - final int ag_type = npc.getParameters().getInt("ag_type", 0); - final int probPhysicalSpecial1 = npc.getParameters().getInt("ProbPhysicalSpecial1", 0); - final int probPhysicalSpecial2 = npc.getParameters().getInt("ProbPhysicalSpecial2", 0); - final SkillHolder physicalSpecial1 = npc.getParameters().getObject("PhysicalSpecial1", SkillHolder.class); - final SkillHolder physicalSpecial2 = npc.getParameters().getObject("PhysicalSpecial2", SkillHolder.class); - - if (((getRandom(100) < 30) && (npc.getId() == DEINO)) || ((npc.getId() == ORNIT) && npc.isScriptValue(0))) - { - mob.clearAggroList(); - npc.setScriptValue(1); - npc.setRunning(); - - final int distance = 3000; - final int heading = Util.calculateHeadingFrom(creature, npc); - final double angle = Util.convertHeadingToDegree(heading); - final double radian = Math.toRadians(angle); - final double sin = Math.sin(radian); - final double cos = Math.cos(radian); - final int newX = (int) (npc.getX() + (cos * distance)); - final int newY = (int) (npc.getY() + (sin * distance)); - final Location loc = GeoEngine.getInstance().canMoveToTargetLoc(npc.getX(), npc.getY(), npc.getZ(), newX, newY, npc.getZ(), npc.getInstanceWorld()); - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, loc, 0); - } - else if (ag_type == 1) - { - if (getRandom(100) <= (probPhysicalSpecial1 * npc.getVariables().getInt("SKILL_MULTIPLER"))) - { - if (!npc.isSkillDisabled(physicalSpecial1.getSkill())) - { - npc.setTarget(creature); - npc.doCast(physicalSpecial1.getSkill()); - } - } - else if ((getRandom(100) <= (probPhysicalSpecial2 * npc.getVariables().getInt("SKILL_MULTIPLER"))) && !npc.isSkillDisabled(physicalSpecial2.getSkill())) - { - npc.setTarget(creature); - npc.doCast(physicalSpecial2.getSkill()); - } - } - } - } - else if (CommonUtil.contains(VEGETABLE, creature.getId())) - { - npc.setTarget(creature); - npc.doCast(CREW_SKILL.getSkill()); - npc.setRunning(); - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, creature); - } - return super.onSeeCreature(npc, creature, isSummon); - } - - @Override - public String onAggroRangeEnter(Npc npc, PlayerInstance player, boolean isSummon) - { - if (npc.isScriptValue(0)) - { - npc.setScriptValue(1); - npc.broadcastSay(ChatType.NPC_GENERAL, "?"); - ((Attackable) npc).clearAggroList(); - startQuestTimer("TREX_ATTACK", 6000, npc, player); - } - return super.onAggroRangeEnter(npc, player, isSummon); - } - - @Override - public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon) - { - if (npc.getId() == EGG) - { - if ((getRandom(100) <= 80) && npc.isScriptValue(0)) - { - npc.setScriptValue(1); - final Playable playable = isSummon ? attacker.getServitors().values().stream().findFirst().orElse(attacker.getPet()) : attacker; - World.getInstance().forEachVisibleObjectInRange(npc, Attackable.class, 500, monster -> - { - if ((getRandomBoolean())) - { - addAttackPlayerDesire(monster, playable); - } - }); - } - } - else if (CommonUtil.contains(TREX, npc.getId())) - { - final Attackable mob = (Attackable) npc; - final Creature target = mob.getMostHated(); - - if (((npc.getCurrentHp() / npc.getMaxHp()) * 100) <= 30) - { - if (npc.isScriptValue(3)) - { - if (!npc.isSkillDisabled(SELFBUFF1.getSkill())) - { - npc.doCast(SELFBUFF1.getSkill()); - } - } - else if (npc.isScriptValue(1) && !npc.isSkillDisabled(SELFBUFF2.getSkill())) - { - npc.doCast(SELFBUFF2.getSkill()); - } - } - else if ((((npc.getCurrentHp() / npc.getMaxHp()) * 100) <= 60) && (npc.isScriptValue(3)) && !npc.isSkillDisabled(SELFBUFF1.getSkill())) - { - npc.doCast(SELFBUFF1.getSkill()); - } - - if (Util.calculateDistance(npc, attacker, true, false) > 100) - { - if (!npc.isSkillDisabled(LONGRANGEDMAGIC1.getSkill()) && (getRandom(100) <= (10 * npc.getScriptValue()))) - { - npc.setTarget(attacker); - npc.doCast(LONGRANGEDMAGIC1.getSkill()); - } - } - else - { - if (!npc.isSkillDisabled(LONGRANGEDMAGIC1.getSkill()) && (getRandom(100) <= (10 * npc.getScriptValue()))) - { - npc.setTarget(target); - npc.doCast(LONGRANGEDMAGIC1.getSkill()); - } - if (!npc.isSkillDisabled(PHYSICALSPECIAL1.getSkill()) && (getRandom(100) <= (5 * npc.getScriptValue()))) - { - npc.setTarget(target); - npc.doCast(PHYSICALSPECIAL1.getSkill()); - } - if (!npc.isSkillDisabled(PHYSICALSPECIAL2.getSkill()) && (getRandom(100) <= (3 * npc.getScriptValue()))) - { - npc.setTarget(target); - npc.doCast(PHYSICALSPECIAL2.getSkill()); - } - if (!npc.isSkillDisabled(PHYSICALSPECIAL3.getSkill()) && (getRandom(100) <= (5 * npc.getScriptValue()))) - { - npc.setTarget(target); - npc.doCast(PHYSICALSPECIAL3.getSkill()); - } - } - } - else - { - Creature target = null; - final int probPhysicalSpecial1 = npc.getParameters().getInt("ProbPhysicalSpecial1", 0); - final int probPhysicalSpecial2 = npc.getParameters().getInt("ProbPhysicalSpecial2", 0); - final SkillHolder selfRangeBuff1 = npc.getParameters().getObject("SelfRangeBuff1", SkillHolder.class); - final SkillHolder physicalSpecial1 = npc.getParameters().getObject("PhysicalSpecial1", SkillHolder.class); - final SkillHolder physicalSpecial2 = npc.getParameters().getObject("PhysicalSpecial2", SkillHolder.class); - - if (((npc.getCurrentHp() / npc.getMaxHp()) * 100) <= 50) - { - npc.getVariables().set("SKILL_MULTIPLER", 2); - } - else - { - npc.getVariables().set("SKILL_MULTIPLER", 1); - } - - if ((((npc.getCurrentHp() / npc.getMaxHp()) * 100) <= 30) && (npc.getVariables().getInt("SELFBUFF_USED") == 0)) - { - final Attackable mob = (Attackable) npc; - target = mob.getMostHated(); - mob.clearAggroList(); - if (!npc.isSkillDisabled(selfRangeBuff1.getSkill())) - { - npc.getVariables().set("SELFBUFF_USED", 1); - npc.doCast(selfRangeBuff1.getSkill()); - npc.setRunning(); - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); - } - } - - if (target != null) - { - if ((getRandom(100) <= (probPhysicalSpecial1 * npc.getVariables().getInt("SKILL_MULTIPLER"))) && !npc.isSkillDisabled(physicalSpecial1.getSkill())) - { - npc.setTarget(target); - npc.doCast(physicalSpecial1.getSkill()); - } - if ((getRandom(100) <= (probPhysicalSpecial2 * npc.getVariables().getInt("SKILL_MULTIPLER"))) && !npc.isSkillDisabled(physicalSpecial2.getSkill())) - { - npc.setTarget(target); - npc.doCast(physicalSpecial2.getSkill()); - } - } - } - return super.onAttack(npc, attacker, damage, isSummon); - } - - @Override - public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) - { - if ((npc.getId() == DEINO) || ((npc.getId() == ORNIT) && !npc.isScriptValue(1))) - { - return super.onKill(npc, killer, isSummon); - } - if ((npc.getId() == SAILREN) || (getRandom(100) < 3)) - { - final PlayerInstance player = npc.getId() == SAILREN ? getRandomPartyMember(killer) : killer; - if (player.isInventoryUnder80(false)) - { - giveItems(player, DEINONYCHUS, 1); - final ItemInstance summonItem = player.getInventory().getItemByItemId(DEINONYCHUS); - final IItemHandler handler = ItemHandler.getInstance().getHandler(summonItem.getEtcItem()); - if ((handler != null) && !player.hasPet()) - { - handler.useItem(player, summonItem, true); - } - showOnScreenMsg(player, NpcStringId.LIFE_STONE_FROM_THE_BEGINNING_ACQUIRED, 2, 6000); - } - else - { - showOnScreenMsg(player, NpcStringId.WHEN_INVENTORY_WEIGHT_NUMBER_ARE_MORE_THAN_80_THE_LIFE_STONE_FROM_THE_BEGINNING_CANNOT_BE_ACQUIRED, 2, 6000); - } - } - return super.onKill(npc, killer, isSummon); - } - - @Override - public String onSpawn(Npc npc) - { - if (CommonUtil.contains(SPRIGNANT, npc.getId())) - { - cancelQuestTimer("USE_SKILL", npc, null); - startQuestTimer("USE_SKILL", 15000, npc, null); - } - else if (CommonUtil.contains(TREX, npc.getId())) - { - final int collectGhost = npc.getParameters().getInt("CollectGhost", 0); - final int collectDespawn = npc.getParameters().getInt("CollectGhostDespawnTime", 30); - - if (collectGhost == 1) - { - cancelQuestTimer("GHOST_DESPAWN", npc, null); - startQuestTimer("GHOST_DESPAWN", collectDespawn * 60000, npc, null); - } - } - else - { - npc.getVariables().set("SELFBUFF_USED", 0); - npc.getVariables().set("SKILL_MULTIPLER", 1); - } - return super.onSpawn(npc); - } - - public static void main(String[] args) - { - new PrimevalIsle(); - } -} diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/spawns/LimitedZones/PrimevalIsle.xml b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/spawns/LimitedZones/PrimevalIsle.xml new file mode 100644 index 0000000000..76d339ac7b --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/spawns/LimitedZones/PrimevalIsle.xml @@ -0,0 +1,897 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/spawns/LimitedZones/StormIsle.xml b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/spawns/LimitedZones/StormIsle.xml index 4dccfa3cee..21ebe0bf7f 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/spawns/LimitedZones/StormIsle.xml +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/spawns/LimitedZones/StormIsle.xml @@ -1171,6 +1171,22 @@ + + + + + + + + + + + + + + + + diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/spawns/Rune/PrimevalIsle.xml b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/spawns/Rune/PrimevalIsle.xml deleted file mode 100644 index d74bba492b..0000000000 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/spawns/Rune/PrimevalIsle.xml +++ /dev/null @@ -1,570 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/stats/npcs/34500-34599.xml b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/stats/npcs/34500-34599.xml index 4121043e7b..c8649447f2 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/stats/npcs/34500-34599.xml +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/stats/npcs/34500-34599.xml @@ -499,7 +499,7 @@ - + ETC FEMALE diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/teleporters/others/PrimevalIsle.xml b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/teleporters/others/PrimevalIsle.xml index 1e0776313d..2514ff8fbd 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/teleporters/others/PrimevalIsle.xml +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/teleporters/others/PrimevalIsle.xml @@ -1,8 +1,11 @@ - + - + + + + \ No newline at end of file