diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/DoorData.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/DoorData.xml index 8454b546f7..eb50103d9b 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/DoorData.xml +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/DoorData.xml @@ -18326,4 +18326,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/instances/Bosses/Camille.xml b/L2J_Mobius_5.5_EtinasFate/dist/game/data/instances/Bosses/Camille.xml new file mode 100644 index 0000000000..30d5fda965 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/instances/Bosses/Camille.xml @@ -0,0 +1,54 @@ + + + + diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html index 0e5f31ce70..cc88c62b09 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html @@ -1,7 +1,7 @@ Erda:
Thank you. Without your help, we couldn't have won easily.
- + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Camille/34324.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Camille/34324.html new file mode 100644 index 0000000000..30abf533de --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Camille/34324.html @@ -0,0 +1,4 @@ +Transporter:
+This device sends you up. + + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Camille/Camille.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Camille/Camille.java new file mode 100644 index 0000000000..3fb32bad34 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Camille/Camille.java @@ -0,0 +1,121 @@ +/* + * 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.bosses.Camille; + +import org.l2jmobius.gameserver.model.Location; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.DoorInstance; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; + +import instances.AbstractInstance; + +/** + * Camille instance zone. + * @author Sero + * @URL https://www.youtube.com/watch?v=jpv9S_xQVrA + */ +public class Camille extends AbstractInstance +{ + // NPCs + private static final int CAMILLE = 26236; + private static final int MAMUT = 26243; + private static final int ISBURG = 26244; + private static final int TRANSMISSION_UNIT = 34324; + private static final int ERDA = 34319; + // Locations + private static final Location ENTER_LOCATION = new Location(-245768, 147832, 4662); + private static final Location TELEPORTER_LOCATION = new Location(-245752, 151112, 4662); + private static final Location CAMILLE_LOCATION = new Location(-245752, 150392, 11845); + // Misc + private static final int TEMPLATE_ID = 266; + + public Camille() + { + super(TEMPLATE_ID); + addStartNpc(ERDA); + addTalkId(ERDA, TRANSMISSION_UNIT); + addFirstTalkId(TRANSMISSION_UNIT); + addKillId(CAMILLE, MAMUT, ISBURG); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + switch (event) + { + case "enterInstance": + { + enterInstance(player, npc, TEMPLATE_ID); + final Instance world = player.getInstanceWorld(); + if (isInInstance(world)) + { + world.getPlayers().forEach(p -> p.teleToLocation(ENTER_LOCATION)); + world.getDoors().forEach(DoorInstance::closeMe); + } + break; + } + case "teleup": + { + final Instance world = npc.getInstanceWorld(); + if (isInInstance(world) && (npc.getId() == TRANSMISSION_UNIT)) + { + world.getPlayers().forEach(p -> p.teleToLocation(CAMILLE_LOCATION)); + world.getDoors().forEach(DoorInstance::closeMe); + } + break; + } + } + return super.onAdvEvent(event, npc, player); + } + + @Override + public String onKill(Npc npc, PlayerInstance player, boolean isSummon) + { + final Instance world = npc.getInstanceWorld(); + if (isInInstance(world)) + { + switch (npc.getId()) + { + case MAMUT: + { + world.openCloseDoor(world.getTemplateParameters().getInt("firstDoorId"), true); + world.openCloseDoor(world.getTemplateParameters().getInt("secondDoorId"), true); + world.setReenterTime(); + break; + } + case ISBURG: + { + addSpawn(TRANSMISSION_UNIT, TELEPORTER_LOCATION, false, 0, false, world.getId()); + world.setReenterTime(); + break; + } + case CAMILLE: + { + world.finishInstance(); + break; + } + } + } + return super.onKill(npc, player, isSummon); + } + + public static void main(String[] args) + { + new Camille(); + } +} \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Camille/condNoParty.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Camille/condNoParty.html new file mode 100644 index 0000000000..6c83427f89 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Camille/condNoParty.html @@ -0,0 +1,3 @@ +Crystal Prison Entrance Portal:
+You must be in a party to enter. + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Camille/condNoPartyLeader.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Camille/condNoPartyLeader.html new file mode 100644 index 0000000000..fc4d02c6d2 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/bosses/Camille/condNoPartyLeader.html @@ -0,0 +1,3 @@ +Crystal Prison Entrance Portal:
+The leader of the party should try to enter. + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/DoorData.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/DoorData.xml index 8454b546f7..eb50103d9b 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/DoorData.xml +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/DoorData.xml @@ -18326,4 +18326,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/instances/Bosses/Camille.xml b/L2J_Mobius_6.0_Fafurion/dist/game/data/instances/Bosses/Camille.xml new file mode 100644 index 0000000000..30d5fda965 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/instances/Bosses/Camille.xml @@ -0,0 +1,54 @@ + + + + diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html index 0e5f31ce70..cc88c62b09 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html @@ -1,7 +1,7 @@ Erda:
Thank you. Without your help, we couldn't have won easily.
- + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Camille/34324.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Camille/34324.html new file mode 100644 index 0000000000..30abf533de --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Camille/34324.html @@ -0,0 +1,4 @@ +Transporter:
+This device sends you up. + + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Camille/Camille.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Camille/Camille.java new file mode 100644 index 0000000000..3fb32bad34 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Camille/Camille.java @@ -0,0 +1,121 @@ +/* + * 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.bosses.Camille; + +import org.l2jmobius.gameserver.model.Location; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.DoorInstance; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; + +import instances.AbstractInstance; + +/** + * Camille instance zone. + * @author Sero + * @URL https://www.youtube.com/watch?v=jpv9S_xQVrA + */ +public class Camille extends AbstractInstance +{ + // NPCs + private static final int CAMILLE = 26236; + private static final int MAMUT = 26243; + private static final int ISBURG = 26244; + private static final int TRANSMISSION_UNIT = 34324; + private static final int ERDA = 34319; + // Locations + private static final Location ENTER_LOCATION = new Location(-245768, 147832, 4662); + private static final Location TELEPORTER_LOCATION = new Location(-245752, 151112, 4662); + private static final Location CAMILLE_LOCATION = new Location(-245752, 150392, 11845); + // Misc + private static final int TEMPLATE_ID = 266; + + public Camille() + { + super(TEMPLATE_ID); + addStartNpc(ERDA); + addTalkId(ERDA, TRANSMISSION_UNIT); + addFirstTalkId(TRANSMISSION_UNIT); + addKillId(CAMILLE, MAMUT, ISBURG); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + switch (event) + { + case "enterInstance": + { + enterInstance(player, npc, TEMPLATE_ID); + final Instance world = player.getInstanceWorld(); + if (isInInstance(world)) + { + world.getPlayers().forEach(p -> p.teleToLocation(ENTER_LOCATION)); + world.getDoors().forEach(DoorInstance::closeMe); + } + break; + } + case "teleup": + { + final Instance world = npc.getInstanceWorld(); + if (isInInstance(world) && (npc.getId() == TRANSMISSION_UNIT)) + { + world.getPlayers().forEach(p -> p.teleToLocation(CAMILLE_LOCATION)); + world.getDoors().forEach(DoorInstance::closeMe); + } + break; + } + } + return super.onAdvEvent(event, npc, player); + } + + @Override + public String onKill(Npc npc, PlayerInstance player, boolean isSummon) + { + final Instance world = npc.getInstanceWorld(); + if (isInInstance(world)) + { + switch (npc.getId()) + { + case MAMUT: + { + world.openCloseDoor(world.getTemplateParameters().getInt("firstDoorId"), true); + world.openCloseDoor(world.getTemplateParameters().getInt("secondDoorId"), true); + world.setReenterTime(); + break; + } + case ISBURG: + { + addSpawn(TRANSMISSION_UNIT, TELEPORTER_LOCATION, false, 0, false, world.getId()); + world.setReenterTime(); + break; + } + case CAMILLE: + { + world.finishInstance(); + break; + } + } + } + return super.onKill(npc, player, isSummon); + } + + public static void main(String[] args) + { + new Camille(); + } +} \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Camille/condNoParty.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Camille/condNoParty.html new file mode 100644 index 0000000000..6c83427f89 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Camille/condNoParty.html @@ -0,0 +1,3 @@ +Crystal Prison Entrance Portal:
+You must be in a party to enter. + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Camille/condNoPartyLeader.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Camille/condNoPartyLeader.html new file mode 100644 index 0000000000..fc4d02c6d2 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/bosses/Camille/condNoPartyLeader.html @@ -0,0 +1,3 @@ +Crystal Prison Entrance Portal:
+The leader of the party should try to enter. + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/DoorData.xml b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/DoorData.xml index 8454b546f7..eb50103d9b 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/DoorData.xml +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/DoorData.xml @@ -18326,4 +18326,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/instances/Bosses/Camille.xml b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/instances/Bosses/Camille.xml new file mode 100644 index 0000000000..30d5fda965 --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/instances/Bosses/Camille.xml @@ -0,0 +1,54 @@ + + + + diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html index 0e5f31ce70..cc88c62b09 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html @@ -1,7 +1,7 @@ Erda:
Thank you. Without your help, we couldn't have won easily.
- + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Camille/34324.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Camille/34324.html new file mode 100644 index 0000000000..30abf533de --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Camille/34324.html @@ -0,0 +1,4 @@ +Transporter:
+This device sends you up. + + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Camille/Camille.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Camille/Camille.java new file mode 100644 index 0000000000..3fb32bad34 --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Camille/Camille.java @@ -0,0 +1,121 @@ +/* + * 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.bosses.Camille; + +import org.l2jmobius.gameserver.model.Location; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.DoorInstance; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; + +import instances.AbstractInstance; + +/** + * Camille instance zone. + * @author Sero + * @URL https://www.youtube.com/watch?v=jpv9S_xQVrA + */ +public class Camille extends AbstractInstance +{ + // NPCs + private static final int CAMILLE = 26236; + private static final int MAMUT = 26243; + private static final int ISBURG = 26244; + private static final int TRANSMISSION_UNIT = 34324; + private static final int ERDA = 34319; + // Locations + private static final Location ENTER_LOCATION = new Location(-245768, 147832, 4662); + private static final Location TELEPORTER_LOCATION = new Location(-245752, 151112, 4662); + private static final Location CAMILLE_LOCATION = new Location(-245752, 150392, 11845); + // Misc + private static final int TEMPLATE_ID = 266; + + public Camille() + { + super(TEMPLATE_ID); + addStartNpc(ERDA); + addTalkId(ERDA, TRANSMISSION_UNIT); + addFirstTalkId(TRANSMISSION_UNIT); + addKillId(CAMILLE, MAMUT, ISBURG); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + switch (event) + { + case "enterInstance": + { + enterInstance(player, npc, TEMPLATE_ID); + final Instance world = player.getInstanceWorld(); + if (isInInstance(world)) + { + world.getPlayers().forEach(p -> p.teleToLocation(ENTER_LOCATION)); + world.getDoors().forEach(DoorInstance::closeMe); + } + break; + } + case "teleup": + { + final Instance world = npc.getInstanceWorld(); + if (isInInstance(world) && (npc.getId() == TRANSMISSION_UNIT)) + { + world.getPlayers().forEach(p -> p.teleToLocation(CAMILLE_LOCATION)); + world.getDoors().forEach(DoorInstance::closeMe); + } + break; + } + } + return super.onAdvEvent(event, npc, player); + } + + @Override + public String onKill(Npc npc, PlayerInstance player, boolean isSummon) + { + final Instance world = npc.getInstanceWorld(); + if (isInInstance(world)) + { + switch (npc.getId()) + { + case MAMUT: + { + world.openCloseDoor(world.getTemplateParameters().getInt("firstDoorId"), true); + world.openCloseDoor(world.getTemplateParameters().getInt("secondDoorId"), true); + world.setReenterTime(); + break; + } + case ISBURG: + { + addSpawn(TRANSMISSION_UNIT, TELEPORTER_LOCATION, false, 0, false, world.getId()); + world.setReenterTime(); + break; + } + case CAMILLE: + { + world.finishInstance(); + break; + } + } + } + return super.onKill(npc, player, isSummon); + } + + public static void main(String[] args) + { + new Camille(); + } +} \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Camille/condNoParty.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Camille/condNoParty.html new file mode 100644 index 0000000000..6c83427f89 --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Camille/condNoParty.html @@ -0,0 +1,3 @@ +Crystal Prison Entrance Portal:
+You must be in a party to enter. + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Camille/condNoPartyLeader.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Camille/condNoPartyLeader.html new file mode 100644 index 0000000000..fc4d02c6d2 --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/bosses/Camille/condNoPartyLeader.html @@ -0,0 +1,3 @@ +Crystal Prison Entrance Portal:
+The leader of the party should try to enter. + \ No newline at end of file diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/DoorData.xml b/L2J_Mobius_8.0_Homunculus/dist/game/data/DoorData.xml index 8454b546f7..eb50103d9b 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/DoorData.xml +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/DoorData.xml @@ -18326,4 +18326,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/instances/Bosses/Camille.xml b/L2J_Mobius_8.0_Homunculus/dist/game/data/instances/Bosses/Camille.xml new file mode 100644 index 0000000000..30d5fda965 --- /dev/null +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/instances/Bosses/Camille.xml @@ -0,0 +1,54 @@ + + + + diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html index 0e5f31ce70..cc88c62b09 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/areas/KeucereusAllianceBase/Erda/34319.html @@ -1,7 +1,7 @@ Erda:
Thank you. Without your help, we couldn't have won easily.
- + \ No newline at end of file diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/bosses/Camille/34324.html b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/bosses/Camille/34324.html new file mode 100644 index 0000000000..30abf533de --- /dev/null +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/bosses/Camille/34324.html @@ -0,0 +1,4 @@ +Transporter:
+This device sends you up. + + \ No newline at end of file diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/bosses/Camille/Camille.java b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/bosses/Camille/Camille.java new file mode 100644 index 0000000000..3fb32bad34 --- /dev/null +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/bosses/Camille/Camille.java @@ -0,0 +1,121 @@ +/* + * 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.bosses.Camille; + +import org.l2jmobius.gameserver.model.Location; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.DoorInstance; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; + +import instances.AbstractInstance; + +/** + * Camille instance zone. + * @author Sero + * @URL https://www.youtube.com/watch?v=jpv9S_xQVrA + */ +public class Camille extends AbstractInstance +{ + // NPCs + private static final int CAMILLE = 26236; + private static final int MAMUT = 26243; + private static final int ISBURG = 26244; + private static final int TRANSMISSION_UNIT = 34324; + private static final int ERDA = 34319; + // Locations + private static final Location ENTER_LOCATION = new Location(-245768, 147832, 4662); + private static final Location TELEPORTER_LOCATION = new Location(-245752, 151112, 4662); + private static final Location CAMILLE_LOCATION = new Location(-245752, 150392, 11845); + // Misc + private static final int TEMPLATE_ID = 266; + + public Camille() + { + super(TEMPLATE_ID); + addStartNpc(ERDA); + addTalkId(ERDA, TRANSMISSION_UNIT); + addFirstTalkId(TRANSMISSION_UNIT); + addKillId(CAMILLE, MAMUT, ISBURG); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + switch (event) + { + case "enterInstance": + { + enterInstance(player, npc, TEMPLATE_ID); + final Instance world = player.getInstanceWorld(); + if (isInInstance(world)) + { + world.getPlayers().forEach(p -> p.teleToLocation(ENTER_LOCATION)); + world.getDoors().forEach(DoorInstance::closeMe); + } + break; + } + case "teleup": + { + final Instance world = npc.getInstanceWorld(); + if (isInInstance(world) && (npc.getId() == TRANSMISSION_UNIT)) + { + world.getPlayers().forEach(p -> p.teleToLocation(CAMILLE_LOCATION)); + world.getDoors().forEach(DoorInstance::closeMe); + } + break; + } + } + return super.onAdvEvent(event, npc, player); + } + + @Override + public String onKill(Npc npc, PlayerInstance player, boolean isSummon) + { + final Instance world = npc.getInstanceWorld(); + if (isInInstance(world)) + { + switch (npc.getId()) + { + case MAMUT: + { + world.openCloseDoor(world.getTemplateParameters().getInt("firstDoorId"), true); + world.openCloseDoor(world.getTemplateParameters().getInt("secondDoorId"), true); + world.setReenterTime(); + break; + } + case ISBURG: + { + addSpawn(TRANSMISSION_UNIT, TELEPORTER_LOCATION, false, 0, false, world.getId()); + world.setReenterTime(); + break; + } + case CAMILLE: + { + world.finishInstance(); + break; + } + } + } + return super.onKill(npc, player, isSummon); + } + + public static void main(String[] args) + { + new Camille(); + } +} \ No newline at end of file diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/bosses/Camille/condNoParty.html b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/bosses/Camille/condNoParty.html new file mode 100644 index 0000000000..6c83427f89 --- /dev/null +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/bosses/Camille/condNoParty.html @@ -0,0 +1,3 @@ +Crystal Prison Entrance Portal:
+You must be in a party to enter. + \ No newline at end of file diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/bosses/Camille/condNoPartyLeader.html b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/bosses/Camille/condNoPartyLeader.html new file mode 100644 index 0000000000..fc4d02c6d2 --- /dev/null +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/ai/bosses/Camille/condNoPartyLeader.html @@ -0,0 +1,3 @@ +Crystal Prison Entrance Portal:
+The leader of the party should try to enter. + \ No newline at end of file