diff --git a/L2J_Mobius_11.3_Shinemaker/dist/game/data/scripts/ai/areas/Gludio/LizardmanBarracksXPParty.java b/L2J_Mobius_11.3_Shinemaker/dist/game/data/scripts/ai/areas/Gludio/LizardmanBarracksXPParty.java
index 4a663bad8f..edd0721b3c 100644
--- a/L2J_Mobius_11.3_Shinemaker/dist/game/data/scripts/ai/areas/Gludio/LizardmanBarracksXPParty.java
+++ b/L2J_Mobius_11.3_Shinemaker/dist/game/data/scripts/ai/areas/Gludio/LizardmanBarracksXPParty.java
@@ -1,22 +1,27 @@
/*
- * This file is part of the L2J Mobius project.
+ * Copyright (c) 2013 L2jMobius
*
- * 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.
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
*
- * 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.
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+ * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package ai.areas.Gludio;
import org.l2jmobius.commons.threads.ThreadPool;
+import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
@@ -27,7 +32,7 @@ import ai.AbstractNpcAI;
*/
public class LizardmanBarracksXPParty extends AbstractNpcAI
{
- // Monsters Lizardman Barracks
+ // NPCs
private static final int[] MONSTER_IDS =
{
23834,
@@ -37,10 +42,10 @@ public class LizardmanBarracksXPParty extends AbstractNpcAI
23838,
23839
};
- // Distance radius for XP bonus Party
+ // Distance radius for XP bonus Party.
private static final int BONUS_RADIUS = 1500;
- // Maximum XP Bonus (Level 126)
- private static final double MAX_BONUS_PERCENTAGE = 0.25; // Bonus 25%
+ // Maximum XP Bonus (Level 126).
+ private static final double MAX_BONUS_PERCENTAGE = 0.25; // Bonus 25%.
private LizardmanBarracksXPParty()
{
@@ -50,27 +55,21 @@ public class LizardmanBarracksXPParty extends AbstractNpcAI
@Override
public String onKill(Npc npc, Player killer, boolean isSummon)
{
- if (npc.isMonster() && contains(MONSTER_IDS, npc.getId()))
+ final Party party = killer.getParty();
+ if (party != null)
{
- final org.l2jmobius.gameserver.model.Party party = killer.getParty();
- if (party != null)
+ for (Player member : party.getMembers())
{
- for (Player member : party.getMembers())
+ if (killer.isInsideRadius3D(member, BONUS_RADIUS) && (member.getLevel() >= 117) && (member.getLevel() <= 131))
{
- if (killer.isInsideRadius3D(member, BONUS_RADIUS) && (member.getLevel() >= 117) && (member.getLevel() <= 131))
- {
- final double bonusPercentage = calculateBonusPercentage(member.getLevel());
- final long bonusXp = (long) (npc.getExpReward(member.getLevel()) * bonusPercentage);
-
- // Adiciona a experiência total ao jogador após 1 segundo
- ThreadPool.schedule(() ->
- {
- member.addExpAndSp(bonusXp, 0);
- }, 1000); // 1000 milissegundos = 1 segundo
- }
+ // Add total experience to the player after 1 second.
+ final double bonusPercentage = calculateBonusPercentage(member.getLevel());
+ final long bonusXp = (long) (npc.getExpReward(member.getLevel()) * bonusPercentage);
+ ThreadPool.schedule(() -> member.addExpAndSp(bonusXp, 0), 1000);
}
}
}
+
return super.onKill(npc, killer, isSummon);
}
@@ -78,24 +77,34 @@ public class LizardmanBarracksXPParty extends AbstractNpcAI
{
if ((level < 117) || (level > 131))
{
- return 0; // No bonus for out of range levels
+ return 0; // No bonus for out of range levels.
}
- // Sets the percentage proportional to the level
+ // Sets the percentage proportional to the level.
switch (level)
{
case 117:
+ {
return MAX_BONUS_PERCENTAGE * 0.1;
+ }
case 118:
case 119:
case 120:
+ {
return MAX_BONUS_PERCENTAGE * 0.2;
+ }
case 121:
+ {
return MAX_BONUS_PERCENTAGE * 0.4;
+ }
case 122:
+ {
return MAX_BONUS_PERCENTAGE * 0.6;
+ }
case 123:
+ {
return MAX_BONUS_PERCENTAGE * 0.97;
+ }
case 124:
case 125:
case 126:
@@ -104,22 +113,14 @@ public class LizardmanBarracksXPParty extends AbstractNpcAI
case 129:
case 130:
case 131:
- return MAX_BONUS_PERCENTAGE;
- default:
- return 0;
- }
- }
-
- private static boolean contains(int[] array, int value)
- {
- for (int i : array)
- {
- if (i == value)
{
- return true;
+ return MAX_BONUS_PERCENTAGE;
+ }
+ default:
+ {
+ return 0;
}
}
- return false;
}
public static void main(String[] args)
diff --git a/L2J_Mobius_11.3_Shinemaker/dist/game/data/scripts/ai/areas/Gludio/LizardmanTempleXPParty.java b/L2J_Mobius_11.3_Shinemaker/dist/game/data/scripts/ai/areas/Gludio/LizardmanTempleXPParty.java
index babb6cfd0a..878af97573 100644
--- a/L2J_Mobius_11.3_Shinemaker/dist/game/data/scripts/ai/areas/Gludio/LizardmanTempleXPParty.java
+++ b/L2J_Mobius_11.3_Shinemaker/dist/game/data/scripts/ai/areas/Gludio/LizardmanTempleXPParty.java
@@ -1,18 +1,22 @@
/*
- * This file is part of the L2J Mobius project.
+ * Copyright (c) 2013 L2jMobius
*
- * 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.
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
*
- * 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.
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+ * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package ai.areas.Gludio;
@@ -27,7 +31,7 @@ import ai.AbstractNpcAI;
*/
public class LizardmanTempleXPParty extends AbstractNpcAI
{
- // Monsters Lizardman Temple
+ // NPCs
private static final int[] MONSTER_IDS =
{
24687,
@@ -39,10 +43,10 @@ public class LizardmanTempleXPParty extends AbstractNpcAI
24693,
24694
};
- // Distance radius for XP bonus Party
+ // Distance radius for XP bonus Party.
private static final int BONUS_RADIUS = 1500;
- // Maximum XP Bonus (Level 128)
- private static final double MAX_BONUS_PERCENTAGE = 0.25; // Bonus 25%
+ // Maximum XP Bonus (Level 128).
+ private static final double MAX_BONUS_PERCENTAGE = 0.25; // Bonus 25%.
private LizardmanTempleXPParty()
{
@@ -52,27 +56,21 @@ public class LizardmanTempleXPParty extends AbstractNpcAI
@Override
public String onKill(Npc npc, Player killer, boolean isSummon)
{
- if (npc.isMonster() && contains(MONSTER_IDS, npc.getId()))
+ final org.l2jmobius.gameserver.model.Party party = killer.getParty();
+ if (party != null)
{
- final org.l2jmobius.gameserver.model.Party party = killer.getParty();
- if (party != null)
+ for (Player member : party.getMembers())
{
- for (Player member : party.getMembers())
+ if (killer.isInsideRadius3D(member, BONUS_RADIUS) && (member.getLevel() >= 118) && (member.getLevel() <= 131))
{
- if (killer.isInsideRadius3D(member, BONUS_RADIUS) && (member.getLevel() >= 118) && (member.getLevel() <= 131))
- {
- final double bonusPercentage = calculateBonusPercentage(member.getLevel());
- final long bonusXp = (long) (npc.getExpReward(member.getLevel()) * bonusPercentage);
-
- // Adiciona a experiência total ao jogador após 1 segundo
- ThreadPool.schedule(() ->
- {
- member.addExpAndSp(bonusXp, 0);
- }, 1000); // 1000 milissegundos = 1 segundo
- }
+ // Add total experience to the player after 1 second.
+ final double bonusPercentage = calculateBonusPercentage(member.getLevel());
+ final long bonusXp = (long) (npc.getExpReward(member.getLevel()) * bonusPercentage);
+ ThreadPool.schedule(() -> member.addExpAndSp(bonusXp, 0), 1000);
}
}
}
+
return super.onKill(npc, killer, isSummon);
}
@@ -80,55 +78,65 @@ public class LizardmanTempleXPParty extends AbstractNpcAI
{
if ((level < 118) || (level > 131))
{
- return 0; // No bonus for out of range levels
+ return 0; // No bonus for out of range levels.
}
- // Sets the percentage proportional to the level
+ // Sets the percentage proportional to the level.
switch (level)
{
case 118:
+ {
return MAX_BONUS_PERCENTAGE * 0.1;
+ }
case 119:
+ {
return MAX_BONUS_PERCENTAGE * 0.2;
+ }
case 120:
+ {
return MAX_BONUS_PERCENTAGE * 0.3;
+ }
case 121:
+ {
return MAX_BONUS_PERCENTAGE * 0.4;
+ }
case 122:
+ {
return MAX_BONUS_PERCENTAGE * 0.5;
+ }
case 123:
+ {
return MAX_BONUS_PERCENTAGE * 0.6;
+ }
case 124:
case 125:
+ {
return MAX_BONUS_PERCENTAGE * 0.8;
+ }
case 126:
+ {
return MAX_BONUS_PERCENTAGE * 0.9;
+ }
case 127:
+ {
return MAX_BONUS_PERCENTAGE * 0.95;
+ }
case 128:
case 129:
case 130:
case 131:
- return MAX_BONUS_PERCENTAGE;
- default:
- return 0;
- }
- }
-
- private static boolean contains(int[] array, int value)
- {
- for (int i : array)
- {
- if (i == value)
{
- return true;
+ return MAX_BONUS_PERCENTAGE;
+ }
+ default:
+ {
+ return 0;
}
}
- return false;
}
public static void main(String[] args)
{
new LizardmanTempleXPParty();
}
-}
\ No newline at end of file
+}
diff --git a/L2J_Mobius_11.3_Shinemaker/dist/game/data/scripts/ai/bosses/Coatl/Coatl.java b/L2J_Mobius_11.3_Shinemaker/dist/game/data/scripts/ai/bosses/Coatl/Coatl.java
index 3b31585aa3..d61803beff 100644
--- a/L2J_Mobius_11.3_Shinemaker/dist/game/data/scripts/ai/bosses/Coatl/Coatl.java
+++ b/L2J_Mobius_11.3_Shinemaker/dist/game/data/scripts/ai/bosses/Coatl/Coatl.java
@@ -160,10 +160,15 @@ public class Coatl extends AbstractNpcAI
// Spawn.
_invisibleCoatl = addSpawn(INVISIBLE_COATL_ID, INVISIBLE_COATL_LOCATION);
+ _invisibleCoatl.setImmobilized(true);
_flameTotem = addSpawn(FLAME_TOTEM_ID, FLAME_TOTEM_LOCATION);
+ _flameTotem.setImmobilized(true);
_kashaTotem = addSpawn(KASHA_TOTEM_ID, KASHA_TOTEM_LOCATION);
+ _kashaTotem.setImmobilized(true);
_earthTotem = addSpawn(EARTH_TOTEM_ID, EARTH_TOTEM_LOCATION);
+ _earthTotem.setImmobilized(true);
_waterTotem = addSpawn(WATER_TOTEM_ID, WATER_TOTEM_LOCATION);
+ _waterTotem.setImmobilized(true);
// startQuestTimer("dispel_boss_buffs", 250, null, null, true);
}
diff --git a/L2J_Mobius_12.1_PathOfRogue/dist/game/data/scripts/ai/areas/Gludio/LizardmanBarracksXPParty.java b/L2J_Mobius_12.1_PathOfRogue/dist/game/data/scripts/ai/areas/Gludio/LizardmanBarracksXPParty.java
index 4a663bad8f..edd0721b3c 100644
--- a/L2J_Mobius_12.1_PathOfRogue/dist/game/data/scripts/ai/areas/Gludio/LizardmanBarracksXPParty.java
+++ b/L2J_Mobius_12.1_PathOfRogue/dist/game/data/scripts/ai/areas/Gludio/LizardmanBarracksXPParty.java
@@ -1,22 +1,27 @@
/*
- * This file is part of the L2J Mobius project.
+ * Copyright (c) 2013 L2jMobius
*
- * 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.
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
*
- * 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.
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+ * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package ai.areas.Gludio;
import org.l2jmobius.commons.threads.ThreadPool;
+import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
@@ -27,7 +32,7 @@ import ai.AbstractNpcAI;
*/
public class LizardmanBarracksXPParty extends AbstractNpcAI
{
- // Monsters Lizardman Barracks
+ // NPCs
private static final int[] MONSTER_IDS =
{
23834,
@@ -37,10 +42,10 @@ public class LizardmanBarracksXPParty extends AbstractNpcAI
23838,
23839
};
- // Distance radius for XP bonus Party
+ // Distance radius for XP bonus Party.
private static final int BONUS_RADIUS = 1500;
- // Maximum XP Bonus (Level 126)
- private static final double MAX_BONUS_PERCENTAGE = 0.25; // Bonus 25%
+ // Maximum XP Bonus (Level 126).
+ private static final double MAX_BONUS_PERCENTAGE = 0.25; // Bonus 25%.
private LizardmanBarracksXPParty()
{
@@ -50,27 +55,21 @@ public class LizardmanBarracksXPParty extends AbstractNpcAI
@Override
public String onKill(Npc npc, Player killer, boolean isSummon)
{
- if (npc.isMonster() && contains(MONSTER_IDS, npc.getId()))
+ final Party party = killer.getParty();
+ if (party != null)
{
- final org.l2jmobius.gameserver.model.Party party = killer.getParty();
- if (party != null)
+ for (Player member : party.getMembers())
{
- for (Player member : party.getMembers())
+ if (killer.isInsideRadius3D(member, BONUS_RADIUS) && (member.getLevel() >= 117) && (member.getLevel() <= 131))
{
- if (killer.isInsideRadius3D(member, BONUS_RADIUS) && (member.getLevel() >= 117) && (member.getLevel() <= 131))
- {
- final double bonusPercentage = calculateBonusPercentage(member.getLevel());
- final long bonusXp = (long) (npc.getExpReward(member.getLevel()) * bonusPercentage);
-
- // Adiciona a experiência total ao jogador após 1 segundo
- ThreadPool.schedule(() ->
- {
- member.addExpAndSp(bonusXp, 0);
- }, 1000); // 1000 milissegundos = 1 segundo
- }
+ // Add total experience to the player after 1 second.
+ final double bonusPercentage = calculateBonusPercentage(member.getLevel());
+ final long bonusXp = (long) (npc.getExpReward(member.getLevel()) * bonusPercentage);
+ ThreadPool.schedule(() -> member.addExpAndSp(bonusXp, 0), 1000);
}
}
}
+
return super.onKill(npc, killer, isSummon);
}
@@ -78,24 +77,34 @@ public class LizardmanBarracksXPParty extends AbstractNpcAI
{
if ((level < 117) || (level > 131))
{
- return 0; // No bonus for out of range levels
+ return 0; // No bonus for out of range levels.
}
- // Sets the percentage proportional to the level
+ // Sets the percentage proportional to the level.
switch (level)
{
case 117:
+ {
return MAX_BONUS_PERCENTAGE * 0.1;
+ }
case 118:
case 119:
case 120:
+ {
return MAX_BONUS_PERCENTAGE * 0.2;
+ }
case 121:
+ {
return MAX_BONUS_PERCENTAGE * 0.4;
+ }
case 122:
+ {
return MAX_BONUS_PERCENTAGE * 0.6;
+ }
case 123:
+ {
return MAX_BONUS_PERCENTAGE * 0.97;
+ }
case 124:
case 125:
case 126:
@@ -104,22 +113,14 @@ public class LizardmanBarracksXPParty extends AbstractNpcAI
case 129:
case 130:
case 131:
- return MAX_BONUS_PERCENTAGE;
- default:
- return 0;
- }
- }
-
- private static boolean contains(int[] array, int value)
- {
- for (int i : array)
- {
- if (i == value)
{
- return true;
+ return MAX_BONUS_PERCENTAGE;
+ }
+ default:
+ {
+ return 0;
}
}
- return false;
}
public static void main(String[] args)
diff --git a/L2J_Mobius_12.1_PathOfRogue/dist/game/data/scripts/ai/areas/Gludio/LizardmanTempleXPParty.java b/L2J_Mobius_12.1_PathOfRogue/dist/game/data/scripts/ai/areas/Gludio/LizardmanTempleXPParty.java
index babb6cfd0a..878af97573 100644
--- a/L2J_Mobius_12.1_PathOfRogue/dist/game/data/scripts/ai/areas/Gludio/LizardmanTempleXPParty.java
+++ b/L2J_Mobius_12.1_PathOfRogue/dist/game/data/scripts/ai/areas/Gludio/LizardmanTempleXPParty.java
@@ -1,18 +1,22 @@
/*
- * This file is part of the L2J Mobius project.
+ * Copyright (c) 2013 L2jMobius
*
- * 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.
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
*
- * 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.
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+ * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package ai.areas.Gludio;
@@ -27,7 +31,7 @@ import ai.AbstractNpcAI;
*/
public class LizardmanTempleXPParty extends AbstractNpcAI
{
- // Monsters Lizardman Temple
+ // NPCs
private static final int[] MONSTER_IDS =
{
24687,
@@ -39,10 +43,10 @@ public class LizardmanTempleXPParty extends AbstractNpcAI
24693,
24694
};
- // Distance radius for XP bonus Party
+ // Distance radius for XP bonus Party.
private static final int BONUS_RADIUS = 1500;
- // Maximum XP Bonus (Level 128)
- private static final double MAX_BONUS_PERCENTAGE = 0.25; // Bonus 25%
+ // Maximum XP Bonus (Level 128).
+ private static final double MAX_BONUS_PERCENTAGE = 0.25; // Bonus 25%.
private LizardmanTempleXPParty()
{
@@ -52,27 +56,21 @@ public class LizardmanTempleXPParty extends AbstractNpcAI
@Override
public String onKill(Npc npc, Player killer, boolean isSummon)
{
- if (npc.isMonster() && contains(MONSTER_IDS, npc.getId()))
+ final org.l2jmobius.gameserver.model.Party party = killer.getParty();
+ if (party != null)
{
- final org.l2jmobius.gameserver.model.Party party = killer.getParty();
- if (party != null)
+ for (Player member : party.getMembers())
{
- for (Player member : party.getMembers())
+ if (killer.isInsideRadius3D(member, BONUS_RADIUS) && (member.getLevel() >= 118) && (member.getLevel() <= 131))
{
- if (killer.isInsideRadius3D(member, BONUS_RADIUS) && (member.getLevel() >= 118) && (member.getLevel() <= 131))
- {
- final double bonusPercentage = calculateBonusPercentage(member.getLevel());
- final long bonusXp = (long) (npc.getExpReward(member.getLevel()) * bonusPercentage);
-
- // Adiciona a experiência total ao jogador após 1 segundo
- ThreadPool.schedule(() ->
- {
- member.addExpAndSp(bonusXp, 0);
- }, 1000); // 1000 milissegundos = 1 segundo
- }
+ // Add total experience to the player after 1 second.
+ final double bonusPercentage = calculateBonusPercentage(member.getLevel());
+ final long bonusXp = (long) (npc.getExpReward(member.getLevel()) * bonusPercentage);
+ ThreadPool.schedule(() -> member.addExpAndSp(bonusXp, 0), 1000);
}
}
}
+
return super.onKill(npc, killer, isSummon);
}
@@ -80,55 +78,65 @@ public class LizardmanTempleXPParty extends AbstractNpcAI
{
if ((level < 118) || (level > 131))
{
- return 0; // No bonus for out of range levels
+ return 0; // No bonus for out of range levels.
}
- // Sets the percentage proportional to the level
+ // Sets the percentage proportional to the level.
switch (level)
{
case 118:
+ {
return MAX_BONUS_PERCENTAGE * 0.1;
+ }
case 119:
+ {
return MAX_BONUS_PERCENTAGE * 0.2;
+ }
case 120:
+ {
return MAX_BONUS_PERCENTAGE * 0.3;
+ }
case 121:
+ {
return MAX_BONUS_PERCENTAGE * 0.4;
+ }
case 122:
+ {
return MAX_BONUS_PERCENTAGE * 0.5;
+ }
case 123:
+ {
return MAX_BONUS_PERCENTAGE * 0.6;
+ }
case 124:
case 125:
+ {
return MAX_BONUS_PERCENTAGE * 0.8;
+ }
case 126:
+ {
return MAX_BONUS_PERCENTAGE * 0.9;
+ }
case 127:
+ {
return MAX_BONUS_PERCENTAGE * 0.95;
+ }
case 128:
case 129:
case 130:
case 131:
- return MAX_BONUS_PERCENTAGE;
- default:
- return 0;
- }
- }
-
- private static boolean contains(int[] array, int value)
- {
- for (int i : array)
- {
- if (i == value)
{
- return true;
+ return MAX_BONUS_PERCENTAGE;
+ }
+ default:
+ {
+ return 0;
}
}
- return false;
}
public static void main(String[] args)
{
new LizardmanTempleXPParty();
}
-}
\ No newline at end of file
+}
diff --git a/L2J_Mobius_12.1_PathOfRogue/dist/game/data/scripts/ai/bosses/Coatl/Coatl.java b/L2J_Mobius_12.1_PathOfRogue/dist/game/data/scripts/ai/bosses/Coatl/Coatl.java
index 3b31585aa3..d61803beff 100644
--- a/L2J_Mobius_12.1_PathOfRogue/dist/game/data/scripts/ai/bosses/Coatl/Coatl.java
+++ b/L2J_Mobius_12.1_PathOfRogue/dist/game/data/scripts/ai/bosses/Coatl/Coatl.java
@@ -160,10 +160,15 @@ public class Coatl extends AbstractNpcAI
// Spawn.
_invisibleCoatl = addSpawn(INVISIBLE_COATL_ID, INVISIBLE_COATL_LOCATION);
+ _invisibleCoatl.setImmobilized(true);
_flameTotem = addSpawn(FLAME_TOTEM_ID, FLAME_TOTEM_LOCATION);
+ _flameTotem.setImmobilized(true);
_kashaTotem = addSpawn(KASHA_TOTEM_ID, KASHA_TOTEM_LOCATION);
+ _kashaTotem.setImmobilized(true);
_earthTotem = addSpawn(EARTH_TOTEM_ID, EARTH_TOTEM_LOCATION);
+ _earthTotem.setImmobilized(true);
_waterTotem = addSpawn(WATER_TOTEM_ID, WATER_TOTEM_LOCATION);
+ _waterTotem.setImmobilized(true);
// startQuestTimer("dispel_boss_buffs", 250, null, null, true);
}