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