Purge rework and new additions.
Contributed by Serenitty.
This commit is contained in:
@@ -4,5 +4,6 @@ CREATE TABLE IF NOT EXISTS `character_purge` (
|
||||
`category` int(3) UNSIGNED NOT NULL DEFAULT 0,
|
||||
`points` int(10) UNSIGNED NOT NULL DEFAULT 0,
|
||||
`keys` int(10) UNSIGNED NOT NULL DEFAULT 0,
|
||||
`remainingKeys` int(10) UNSIGNED NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`charId`,`category`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
|
||||
@@ -23,16 +23,18 @@ import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.PurgePlayerHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.SubjugationHolder;
|
||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.subjugation.ExSubjugationSidebar;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
|
||||
/**
|
||||
* Written by Berezkin Nikolay, on 13.04.2021
|
||||
* Written by Berezkin Nikolay, Serenitty
|
||||
*/
|
||||
public class CrumaTowerPurge extends AbstractNpcAI
|
||||
{
|
||||
private static final int CATEGORY = 1;
|
||||
private static final int MAX_KEYS = 40;
|
||||
private static final int PURGE_MAX_POINT = 1000000;
|
||||
private static final SubjugationHolder PURGE_DATA = SubjugationData.getInstance().getSubjugation(CATEGORY);
|
||||
|
||||
@@ -60,9 +62,11 @@ public class CrumaTowerPurge extends AbstractNpcAI
|
||||
final int pointsForMob = isHotTime ? PURGE_DATA.getNpcs().get(npc.getId()) * 2 : PURGE_DATA.getNpcs().get(npc.getId());
|
||||
final int currentPurgePoints = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getPoints();
|
||||
final int currentKeys = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getKeys();
|
||||
killer.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(Math.min(PURGE_MAX_POINT, currentPurgePoints + pointsForMob), currentKeys));
|
||||
final int remainingKeys = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getMaxPeriodicKeys();
|
||||
killer.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(Math.min(PURGE_MAX_POINT, currentPurgePoints + pointsForMob), currentKeys, remainingKeys));
|
||||
lastCategory(killer);
|
||||
checkPurgeComplete(killer);
|
||||
killer.sendPacket(new ExSubjugationSidebar(CATEGORY, killer.getPurgePoints().get(CATEGORY)));
|
||||
killer.sendPacket(new ExSubjugationSidebar(killer, killer.getPurgePoints().get(CATEGORY)));
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
@@ -71,12 +75,22 @@ public class CrumaTowerPurge extends AbstractNpcAI
|
||||
{
|
||||
final int points = player.getPurgePoints().get(CATEGORY).getPoints();
|
||||
final int keys = player.getPurgePoints().get(CATEGORY).getKeys();
|
||||
if ((points >= PURGE_MAX_POINT) && (keys < 70))
|
||||
if ((points >= PURGE_MAX_POINT) && (keys < MAX_KEYS))
|
||||
{
|
||||
player.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(points - PURGE_MAX_POINT, keys + 1));
|
||||
player.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(points - PURGE_MAX_POINT, keys + 1, player.getPurgePoints().get(CATEGORY).getMaxPeriodicKeys() - 1));
|
||||
}
|
||||
}
|
||||
|
||||
private void lastCategory(Player player)
|
||||
{
|
||||
if (player.getPurgeLastCategory() == CATEGORY)
|
||||
{
|
||||
return;
|
||||
}
|
||||
player.getVariables().remove(PlayerVariables.PURGE_LAST_CATEGORY);
|
||||
player.getVariables().set(PlayerVariables.PURGE_LAST_CATEGORY, CATEGORY);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrumaTowerPurge();
|
||||
|
||||
@@ -23,16 +23,18 @@ import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.PurgePlayerHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.SubjugationHolder;
|
||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.subjugation.ExSubjugationSidebar;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
|
||||
/**
|
||||
* Written by Berezkin Nikolay, on 13.04.2021
|
||||
* Written by Berezkin Nikolay, Serenitty
|
||||
*/
|
||||
public class DragonValleyPurge extends AbstractNpcAI
|
||||
{
|
||||
private static final int CATEGORY = 5;
|
||||
private static final int MAX_KEYS = 40;
|
||||
private static final int PURGE_MAX_POINT = 1000000;
|
||||
private static final SubjugationHolder PURGE_DATA = SubjugationData.getInstance().getSubjugation(CATEGORY);
|
||||
|
||||
@@ -60,9 +62,11 @@ public class DragonValleyPurge extends AbstractNpcAI
|
||||
final int pointsForMob = isHotTime ? PURGE_DATA.getNpcs().get(npc.getId()) * 2 : PURGE_DATA.getNpcs().get(npc.getId());
|
||||
final int currentPurgePoints = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getPoints();
|
||||
final int currentKeys = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getKeys();
|
||||
killer.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(Math.min(PURGE_MAX_POINT, currentPurgePoints + pointsForMob), currentKeys));
|
||||
final int remainingKeys = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getMaxPeriodicKeys();
|
||||
killer.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(Math.min(PURGE_MAX_POINT, currentPurgePoints + pointsForMob), currentKeys, remainingKeys));
|
||||
lastCategory(killer);
|
||||
checkPurgeComplete(killer);
|
||||
killer.sendPacket(new ExSubjugationSidebar(CATEGORY, killer.getPurgePoints().get(CATEGORY)));
|
||||
killer.sendPacket(new ExSubjugationSidebar(killer, killer.getPurgePoints().get(CATEGORY)));
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
@@ -71,12 +75,22 @@ public class DragonValleyPurge extends AbstractNpcAI
|
||||
{
|
||||
final int points = player.getPurgePoints().get(CATEGORY).getPoints();
|
||||
final int keys = player.getPurgePoints().get(CATEGORY).getKeys();
|
||||
if ((points >= PURGE_MAX_POINT) && (keys < 70))
|
||||
if ((points >= PURGE_MAX_POINT) && (keys < MAX_KEYS))
|
||||
{
|
||||
player.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(points - PURGE_MAX_POINT, keys + 1));
|
||||
player.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(points - PURGE_MAX_POINT, keys + 1, player.getPurgePoints().get(CATEGORY).getMaxPeriodicKeys() - 1));
|
||||
}
|
||||
}
|
||||
|
||||
private void lastCategory(Player player)
|
||||
{
|
||||
if (player.getPurgeLastCategory() == CATEGORY)
|
||||
{
|
||||
return;
|
||||
}
|
||||
player.getVariables().remove(PlayerVariables.PURGE_LAST_CATEGORY);
|
||||
player.getVariables().set(PlayerVariables.PURGE_LAST_CATEGORY, CATEGORY);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new DragonValleyPurge();
|
||||
|
||||
@@ -23,16 +23,18 @@ import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.PurgePlayerHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.SubjugationHolder;
|
||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.subjugation.ExSubjugationSidebar;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
|
||||
/**
|
||||
* Written by Berezkin Nikolay, on 13.04.2021
|
||||
* Written by Berezkin Nikolay, Serenitty
|
||||
*/
|
||||
public class OrcBarracksPurge extends AbstractNpcAI
|
||||
{
|
||||
private static final int CATEGORY = 7;
|
||||
private static final int MAX_KEYS = 40;
|
||||
private static final int PURGE_MAX_POINT = 1000000;
|
||||
private static final SubjugationHolder PURGE_DATA = SubjugationData.getInstance().getSubjugation(CATEGORY);
|
||||
|
||||
@@ -60,9 +62,11 @@ public class OrcBarracksPurge extends AbstractNpcAI
|
||||
final int pointsForMob = isHotTime ? PURGE_DATA.getNpcs().get(npc.getId()) * 2 : PURGE_DATA.getNpcs().get(npc.getId());
|
||||
final int currentPurgePoints = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getPoints();
|
||||
final int currentKeys = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getKeys();
|
||||
killer.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(Math.min(PURGE_MAX_POINT, currentPurgePoints + pointsForMob), currentKeys));
|
||||
final int remainingKeys = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getMaxPeriodicKeys();
|
||||
killer.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(Math.min(PURGE_MAX_POINT, currentPurgePoints + pointsForMob), currentKeys, remainingKeys));
|
||||
lastCategory(killer);
|
||||
checkPurgeComplete(killer);
|
||||
killer.sendPacket(new ExSubjugationSidebar(CATEGORY, killer.getPurgePoints().get(CATEGORY)));
|
||||
killer.sendPacket(new ExSubjugationSidebar(killer, killer.getPurgePoints().get(CATEGORY)));
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
@@ -71,12 +75,22 @@ public class OrcBarracksPurge extends AbstractNpcAI
|
||||
{
|
||||
final int points = player.getPurgePoints().get(CATEGORY).getPoints();
|
||||
final int keys = player.getPurgePoints().get(CATEGORY).getKeys();
|
||||
if ((points >= PURGE_MAX_POINT) && (keys < 70))
|
||||
if ((points >= PURGE_MAX_POINT) && (keys < MAX_KEYS))
|
||||
{
|
||||
player.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(points - PURGE_MAX_POINT, keys + 1));
|
||||
player.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(points - PURGE_MAX_POINT, keys + 1, player.getPurgePoints().get(CATEGORY).getMaxPeriodicKeys() - 1));
|
||||
}
|
||||
}
|
||||
|
||||
private void lastCategory(Player player)
|
||||
{
|
||||
if (player.getPurgeLastCategory() == CATEGORY)
|
||||
{
|
||||
return;
|
||||
}
|
||||
player.getVariables().remove(PlayerVariables.PURGE_LAST_CATEGORY);
|
||||
player.getVariables().set(PlayerVariables.PURGE_LAST_CATEGORY, CATEGORY);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new OrcBarracksPurge();
|
||||
|
||||
@@ -23,16 +23,18 @@ import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.PurgePlayerHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.SubjugationHolder;
|
||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.subjugation.ExSubjugationSidebar;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
|
||||
/**
|
||||
* Written by Berezkin Nikolay, on 13.04.2021
|
||||
* Written by Berezkin Nikolay, Serenitty
|
||||
*/
|
||||
public class PlainsOfTheLizardmenPurge extends AbstractNpcAI
|
||||
{
|
||||
private static final int CATEGORY = 3;
|
||||
private static final int MAX_KEYS = 40;
|
||||
private static final int PURGE_MAX_POINT = 1000000;
|
||||
private static final SubjugationHolder PURGE_DATA = SubjugationData.getInstance().getSubjugation(CATEGORY);
|
||||
|
||||
@@ -60,9 +62,11 @@ public class PlainsOfTheLizardmenPurge extends AbstractNpcAI
|
||||
final int pointsForMob = isHotTime ? PURGE_DATA.getNpcs().get(npc.getId()) * 2 : PURGE_DATA.getNpcs().get(npc.getId());
|
||||
final int currentPurgePoints = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getPoints();
|
||||
final int currentKeys = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getKeys();
|
||||
killer.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(Math.min(PURGE_MAX_POINT, currentPurgePoints + pointsForMob), currentKeys));
|
||||
final int remainingKeys = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getMaxPeriodicKeys();
|
||||
killer.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(Math.min(PURGE_MAX_POINT, currentPurgePoints + pointsForMob), currentKeys, remainingKeys));
|
||||
lastCategory(killer);
|
||||
checkPurgeComplete(killer);
|
||||
killer.sendPacket(new ExSubjugationSidebar(CATEGORY, killer.getPurgePoints().get(CATEGORY)));
|
||||
killer.sendPacket(new ExSubjugationSidebar(killer, killer.getPurgePoints().get(CATEGORY)));
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
@@ -71,12 +75,22 @@ public class PlainsOfTheLizardmenPurge extends AbstractNpcAI
|
||||
{
|
||||
final int points = player.getPurgePoints().get(CATEGORY).getPoints();
|
||||
final int keys = player.getPurgePoints().get(CATEGORY).getKeys();
|
||||
if ((points >= PURGE_MAX_POINT) && (keys < 70))
|
||||
if ((points >= PURGE_MAX_POINT) && (keys < MAX_KEYS))
|
||||
{
|
||||
player.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(points - PURGE_MAX_POINT, keys + 1));
|
||||
player.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(points - PURGE_MAX_POINT, keys + 1, player.getPurgePoints().get(CATEGORY).getMaxPeriodicKeys() - 1));
|
||||
}
|
||||
}
|
||||
|
||||
private void lastCategory(Player player)
|
||||
{
|
||||
if (player.getPurgeLastCategory() == CATEGORY)
|
||||
{
|
||||
return;
|
||||
}
|
||||
player.getVariables().remove(PlayerVariables.PURGE_LAST_CATEGORY);
|
||||
player.getVariables().set(PlayerVariables.PURGE_LAST_CATEGORY, CATEGORY);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new PlainsOfTheLizardmenPurge();
|
||||
|
||||
@@ -23,16 +23,18 @@ import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.PurgePlayerHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.SubjugationHolder;
|
||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.subjugation.ExSubjugationSidebar;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
|
||||
/**
|
||||
* Written by Berezkin Nikolay, on 13.04.2021
|
||||
* Written by Berezkin Nikolay, Serenitty
|
||||
*/
|
||||
public class SelMahumBasePurge extends AbstractNpcAI
|
||||
{
|
||||
private static final int CATEGORY = 6;
|
||||
private static final int MAX_KEYS = 40;
|
||||
private static final int PURGE_MAX_POINT = 1000000;
|
||||
private static final SubjugationHolder PURGE_DATA = SubjugationData.getInstance().getSubjugation(CATEGORY);
|
||||
|
||||
@@ -60,9 +62,11 @@ public class SelMahumBasePurge extends AbstractNpcAI
|
||||
final int pointsForMob = isHotTime ? PURGE_DATA.getNpcs().get(npc.getId()) * 2 : PURGE_DATA.getNpcs().get(npc.getId());
|
||||
final int currentPurgePoints = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getPoints();
|
||||
final int currentKeys = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getKeys();
|
||||
killer.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(Math.min(PURGE_MAX_POINT, currentPurgePoints + pointsForMob), currentKeys));
|
||||
final int remainingKeys = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getMaxPeriodicKeys();
|
||||
killer.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(Math.min(PURGE_MAX_POINT, currentPurgePoints + pointsForMob), currentKeys, remainingKeys));
|
||||
lastCategory(killer);
|
||||
checkPurgeComplete(killer);
|
||||
killer.sendPacket(new ExSubjugationSidebar(CATEGORY, killer.getPurgePoints().get(CATEGORY)));
|
||||
killer.sendPacket(new ExSubjugationSidebar(killer, killer.getPurgePoints().get(CATEGORY)));
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
@@ -71,12 +75,22 @@ public class SelMahumBasePurge extends AbstractNpcAI
|
||||
{
|
||||
final int points = player.getPurgePoints().get(CATEGORY).getPoints();
|
||||
final int keys = player.getPurgePoints().get(CATEGORY).getKeys();
|
||||
if ((points >= PURGE_MAX_POINT) && (keys < 70))
|
||||
if ((points >= PURGE_MAX_POINT) && (keys < MAX_KEYS))
|
||||
{
|
||||
player.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(points - PURGE_MAX_POINT, keys + 1));
|
||||
player.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(points - PURGE_MAX_POINT, keys + 1, player.getPurgePoints().get(CATEGORY).getMaxPeriodicKeys() - 1));
|
||||
}
|
||||
}
|
||||
|
||||
private void lastCategory(Player player)
|
||||
{
|
||||
if (player.getPurgeLastCategory() == CATEGORY)
|
||||
{
|
||||
return;
|
||||
}
|
||||
player.getVariables().remove(PlayerVariables.PURGE_LAST_CATEGORY);
|
||||
player.getVariables().set(PlayerVariables.PURGE_LAST_CATEGORY, CATEGORY);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new SelMahumBasePurge();
|
||||
|
||||
@@ -23,16 +23,18 @@ import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.PurgePlayerHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.SubjugationHolder;
|
||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.subjugation.ExSubjugationSidebar;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
|
||||
/**
|
||||
* Written by Berezkin Nikolay, on 13.04.2021
|
||||
* Written by Berezkin Nikolay, Serenitty
|
||||
*/
|
||||
public class SilentValleyPurge extends AbstractNpcAI
|
||||
{
|
||||
private static final int CATEGORY = 2;
|
||||
private static final int MAX_KEYS = 40;
|
||||
private static final int PURGE_MAX_POINT = 1000000;
|
||||
private static final SubjugationHolder PURGE_DATA = SubjugationData.getInstance().getSubjugation(CATEGORY);
|
||||
|
||||
@@ -60,9 +62,11 @@ public class SilentValleyPurge extends AbstractNpcAI
|
||||
final int pointsForMob = isHotTime ? PURGE_DATA.getNpcs().get(npc.getId()) * 2 : PURGE_DATA.getNpcs().get(npc.getId());
|
||||
final int currentPurgePoints = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getPoints();
|
||||
final int currentKeys = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getKeys();
|
||||
killer.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(Math.min(PURGE_MAX_POINT, currentPurgePoints + pointsForMob), currentKeys));
|
||||
final int remainingKeys = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getMaxPeriodicKeys();
|
||||
killer.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(Math.min(PURGE_MAX_POINT, currentPurgePoints + pointsForMob), currentKeys, remainingKeys));
|
||||
lastCategory(killer);
|
||||
checkPurgeComplete(killer);
|
||||
killer.sendPacket(new ExSubjugationSidebar(CATEGORY, killer.getPurgePoints().get(CATEGORY)));
|
||||
killer.sendPacket(new ExSubjugationSidebar(killer, killer.getPurgePoints().get(CATEGORY)));
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
@@ -71,12 +75,22 @@ public class SilentValleyPurge extends AbstractNpcAI
|
||||
{
|
||||
final int points = player.getPurgePoints().get(CATEGORY).getPoints();
|
||||
final int keys = player.getPurgePoints().get(CATEGORY).getKeys();
|
||||
if ((points >= PURGE_MAX_POINT) && (keys < 70))
|
||||
if ((points >= PURGE_MAX_POINT) && (keys < MAX_KEYS))
|
||||
{
|
||||
player.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(points - PURGE_MAX_POINT, keys + 1));
|
||||
player.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(points - PURGE_MAX_POINT, keys + 1, player.getPurgePoints().get(CATEGORY).getMaxPeriodicKeys() - 1));
|
||||
}
|
||||
}
|
||||
|
||||
private void lastCategory(Player player)
|
||||
{
|
||||
if (player.getPurgeLastCategory() == CATEGORY)
|
||||
{
|
||||
return;
|
||||
}
|
||||
player.getVariables().remove(PlayerVariables.PURGE_LAST_CATEGORY);
|
||||
player.getVariables().set(PlayerVariables.PURGE_LAST_CATEGORY, CATEGORY);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new SilentValleyPurge();
|
||||
|
||||
@@ -23,16 +23,18 @@ import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.PurgePlayerHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.SubjugationHolder;
|
||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.subjugation.ExSubjugationSidebar;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
|
||||
/**
|
||||
* Written by Berezkin Nikolay, on 13.04.2021
|
||||
* Written by Berezkin Nikolay, Serenitty
|
||||
*/
|
||||
public class TowerOfInsolencePurge extends AbstractNpcAI
|
||||
{
|
||||
private static final int CATEGORY = 4;
|
||||
private static final int MAX_KEYS = 40;
|
||||
private static final int PURGE_MAX_POINT = 1000000;
|
||||
private static final SubjugationHolder PURGE_DATA = SubjugationData.getInstance().getSubjugation(CATEGORY);
|
||||
|
||||
@@ -60,9 +62,11 @@ public class TowerOfInsolencePurge extends AbstractNpcAI
|
||||
final int pointsForMob = isHotTime ? PURGE_DATA.getNpcs().get(npc.getId()) * 2 : PURGE_DATA.getNpcs().get(npc.getId());
|
||||
final int currentPurgePoints = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getPoints();
|
||||
final int currentKeys = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getKeys();
|
||||
killer.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(Math.min(PURGE_MAX_POINT, currentPurgePoints + pointsForMob), currentKeys));
|
||||
final int remainingKeys = (killer.getPurgePoints().get(CATEGORY) == null) ? 0 : killer.getPurgePoints().get(CATEGORY).getMaxPeriodicKeys();
|
||||
killer.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(Math.min(PURGE_MAX_POINT, currentPurgePoints + pointsForMob), currentKeys, remainingKeys));
|
||||
lastCategory(killer);
|
||||
checkPurgeComplete(killer);
|
||||
killer.sendPacket(new ExSubjugationSidebar(CATEGORY, killer.getPurgePoints().get(CATEGORY)));
|
||||
killer.sendPacket(new ExSubjugationSidebar(killer, killer.getPurgePoints().get(CATEGORY)));
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
@@ -71,12 +75,22 @@ public class TowerOfInsolencePurge extends AbstractNpcAI
|
||||
{
|
||||
final int points = player.getPurgePoints().get(CATEGORY).getPoints();
|
||||
final int keys = player.getPurgePoints().get(CATEGORY).getKeys();
|
||||
if ((points >= PURGE_MAX_POINT) && (keys < 70))
|
||||
if ((points >= PURGE_MAX_POINT) && (keys < MAX_KEYS))
|
||||
{
|
||||
player.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(points - PURGE_MAX_POINT, keys + 1));
|
||||
player.getPurgePoints().put(CATEGORY, new PurgePlayerHolder(points - PURGE_MAX_POINT, keys + 1, player.getPurgePoints().get(CATEGORY).getMaxPeriodicKeys() - 1));
|
||||
}
|
||||
}
|
||||
|
||||
private void lastCategory(Player player)
|
||||
{
|
||||
if (player.getPurgeLastCategory() == CATEGORY)
|
||||
{
|
||||
return;
|
||||
}
|
||||
player.getVariables().remove(PlayerVariables.PURGE_LAST_CATEGORY);
|
||||
player.getVariables().set(PlayerVariables.PURGE_LAST_CATEGORY, CATEGORY);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new TowerOfInsolencePurge();
|
||||
|
||||
@@ -137,6 +137,7 @@ public class DailyTaskManager
|
||||
resetRecommends();
|
||||
resetTrainingCamp();
|
||||
resetTimedHuntingZones();
|
||||
resetMorgosMilitaryBase();
|
||||
resetDailyMissionRewards();
|
||||
resetAttendanceRewards();
|
||||
resetVip();
|
||||
@@ -699,6 +700,32 @@ public class DailyTaskManager
|
||||
LOGGER.info("Daily payment resurrection count for player has been resetted.");
|
||||
}
|
||||
|
||||
private void resetMorgosMilitaryBase()
|
||||
{
|
||||
// Update data for offline players.
|
||||
try (Connection con = DatabaseFactory.getConnection())
|
||||
{
|
||||
try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var=?"))
|
||||
{
|
||||
ps.setString(1, "MORGOS_MILITARY_FREE");
|
||||
ps.execute();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOGGER.log(Level.SEVERE, getClass().getSimpleName() + ": Could not reset MorgosMilitaryBase: " + e);
|
||||
}
|
||||
|
||||
// Update data for online players.
|
||||
for (Player player : World.getInstance().getPlayers())
|
||||
{
|
||||
player.getAccountVariables().remove("MORGOS_MILITARY_FREE");
|
||||
player.getAccountVariables().storeMe();
|
||||
}
|
||||
|
||||
LOGGER.info("MorgosMilitaryBase has been resetted.");
|
||||
}
|
||||
|
||||
public static DailyTaskManager getInstance()
|
||||
{
|
||||
return SingletonHolder.INSTANCE;
|
||||
|
||||
@@ -150,7 +150,7 @@ public class PurgeRankingManager
|
||||
if (onlinePlayer != null)
|
||||
{
|
||||
onlinePlayer.getPurgePoints().clear();
|
||||
onlinePlayer.sendPacket(new ExSubjugationSidebar(category, new PurgePlayerHolder(0, 0)));
|
||||
onlinePlayer.sendPacket(new ExSubjugationSidebar(null, new PurgePlayerHolder(0, 0, 0)));
|
||||
}
|
||||
|
||||
counter++;
|
||||
|
||||
@@ -456,7 +456,7 @@ public class Player extends Playable
|
||||
|
||||
// Purge list:
|
||||
private static final String DELETE_SUBJUGATION = "DELETE FROM character_purge WHERE charId=?";
|
||||
private static final String INSERT_SUBJUGATION = "REPLACE INTO character_purge (`charId`, `category`, `points`, `keys`) VALUES (?, ?, ?, ?)";
|
||||
private static final String INSERT_SUBJUGATION = "REPLACE INTO character_purge (`charId`, `category`, `points`, `keys`, `remainingKeys`) VALUES (?, ?, ?, ?, ?)";
|
||||
private static final String RESTORE_SUBJUGATION = "SELECT * FROM character_purge WHERE charId=?";
|
||||
|
||||
// Elemental Spirits:
|
||||
@@ -15349,6 +15349,7 @@ public class Player extends Playable
|
||||
st.setInt(2, category);
|
||||
st.setInt(3, data.getPoints());
|
||||
st.setInt(4, data.getKeys());
|
||||
st.setInt(5, data.getMaxPeriodicKeys());
|
||||
st.addBatch();
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -15381,7 +15382,7 @@ public class Player extends Playable
|
||||
{
|
||||
while (rset.next())
|
||||
{
|
||||
_purgePoints.put(rset.getInt("category"), new PurgePlayerHolder(rset.getInt("points"), rset.getInt("keys")));
|
||||
_purgePoints.put(rset.getInt("category"), new PurgePlayerHolder(rset.getInt("points"), rset.getInt("keys"), rset.getInt("remainingKeys")));
|
||||
|
||||
}
|
||||
}
|
||||
@@ -15392,6 +15393,16 @@ public class Player extends Playable
|
||||
}
|
||||
}
|
||||
|
||||
public int getPurgeLastCategory()
|
||||
{
|
||||
return getVariables().getInt(PlayerVariables.PURGE_LAST_CATEGORY, 1);
|
||||
}
|
||||
|
||||
public void setPurgeLastCategory(int category)
|
||||
{
|
||||
getVariables().set(PlayerVariables.PURGE_LAST_CATEGORY, category);
|
||||
}
|
||||
|
||||
public int getClanDonationPoints()
|
||||
{
|
||||
return getVariables().getInt(PlayerVariables.CLAN_DONATION_POINTS, 3);
|
||||
|
||||
@@ -17,17 +17,19 @@
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
/**
|
||||
* Written by Berezkin Nikolay, on 04.05.2021
|
||||
* Written by Berezkin Nikolay, Serenitty
|
||||
*/
|
||||
public class PurgePlayerHolder
|
||||
{
|
||||
private final int _points;
|
||||
private final int _keys;
|
||||
private int _getMaxPeriodicKeys;
|
||||
|
||||
public PurgePlayerHolder(int points, int keys)
|
||||
public PurgePlayerHolder(int points, int keys, int remainingKeys)
|
||||
{
|
||||
_points = points;
|
||||
_keys = keys;
|
||||
_getMaxPeriodicKeys = remainingKeys;
|
||||
}
|
||||
|
||||
public int getPoints()
|
||||
@@ -39,4 +41,13 @@ public class PurgePlayerHolder
|
||||
{
|
||||
return _keys;
|
||||
}
|
||||
|
||||
public int getMaxPeriodicKeys()
|
||||
{
|
||||
if ((_keys == 0) && (_getMaxPeriodicKeys == 0))
|
||||
{
|
||||
_getMaxPeriodicKeys += 40;
|
||||
}
|
||||
return _getMaxPeriodicKeys;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,6 +80,7 @@ public class PlayerVariables extends AbstractVariables
|
||||
public static final String STAT_WIT = "STAT_WIT";
|
||||
public static final String STAT_MEN = "STAT_MEN";
|
||||
public static final String RESURRECT_BY_PAYMENT_COUNT = "RESURRECT_BY_PAYMENT_COUNT";
|
||||
public static final String PURGE_LAST_CATEGORY = "PURGE_LAST_CATEGORY";
|
||||
public static final String CLAN_JOIN_TIME = "CLAN_JOIN_TIME";
|
||||
public static final String CLAN_DONATION_POINTS = "CLAN_DONATION_POINTS";
|
||||
|
||||
|
||||
@@ -678,7 +678,7 @@ public class EnterWorld implements IClientIncomingPacket
|
||||
player.sendPacket(new ExCollectionInfo(player, category));
|
||||
}
|
||||
|
||||
player.sendPacket(new ExSubjugationSidebar(1, player.getPurgePoints().get(1)));
|
||||
player.sendPacket(new ExSubjugationSidebar(player, player.getPurgePoints().get(player.getPurgeLastCategory())));
|
||||
|
||||
player.sendPacket(new ItemDeletionInfo());
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ public class RequestSubjugationGacha implements IClientIncomingPacket
|
||||
{
|
||||
player.getInventory().reduceAdena("Purge Gacha", 20000L * _amount, player, null);
|
||||
final int curKeys = playerKeys.getKeys() - _amount;
|
||||
player.getPurgePoints().put(_category, new PurgePlayerHolder(playerKeys.getPoints(), curKeys));
|
||||
player.getPurgePoints().put(_category, new PurgePlayerHolder(playerKeys.getPoints(), curKeys, 0));
|
||||
Map<Integer, Integer> rewards = new HashMap<>();
|
||||
for (int i = 0; i < _amount; i++)
|
||||
{
|
||||
|
||||
@@ -27,7 +27,7 @@ import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
|
||||
/**
|
||||
* Written by Berezkin Nikolay, on 13.04.2021 01 00 00 00 //category 01 00 00 00 1901 00 00 //points 00 00 00 00 4600 00 00 //70 max keys ?
|
||||
* Written by Berezkin Nikolay, 40 keys max according to retail.
|
||||
*/
|
||||
public class ExSubjugationList implements IClientOutgoingPacket
|
||||
{
|
||||
@@ -48,7 +48,7 @@ public class ExSubjugationList implements IClientOutgoingPacket
|
||||
packet.writeD(integerPurgePlayerHolderEntry.getKey());
|
||||
packet.writeD(integerPurgePlayerHolderEntry.getValue() != null ? integerPurgePlayerHolderEntry.getValue().getPoints() : 0);
|
||||
packet.writeD(integerPurgePlayerHolderEntry.getValue() != null ? integerPurgePlayerHolderEntry.getValue().getKeys() : 0);
|
||||
packet.writeD(70);
|
||||
packet.writeD(integerPurgePlayerHolderEntry.getValue() != null ? integerPurgePlayerHolderEntry.getValue().getMaxPeriodicKeys() : 40);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -17,21 +17,22 @@
|
||||
package org.l2jmobius.gameserver.network.serverpackets.subjugation;
|
||||
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.PurgePlayerHolder;
|
||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
|
||||
/**
|
||||
* Written by Berezkin Nikolay, on 13.04.2021 01 00 00 00 19 01 00 00 0000 0000
|
||||
* Written by Berezkin Nikolay, Serenitty
|
||||
*/
|
||||
public class ExSubjugationSidebar implements IClientOutgoingPacket
|
||||
{
|
||||
private final Player _player;
|
||||
private final PurgePlayerHolder _purgeData;
|
||||
private final int _category;
|
||||
|
||||
public ExSubjugationSidebar(int category, PurgePlayerHolder purgeData)
|
||||
public ExSubjugationSidebar(Player player, PurgePlayerHolder purgeData)
|
||||
{
|
||||
_category = category;
|
||||
_player = player;
|
||||
_purgeData = purgeData;
|
||||
}
|
||||
|
||||
@@ -39,9 +40,9 @@ public class ExSubjugationSidebar implements IClientOutgoingPacket
|
||||
public boolean write(PacketWriter packet)
|
||||
{
|
||||
OutgoingPackets.EX_SUBJUGATION_SIDEBAR.writeId(packet);
|
||||
packet.writeD(_category); // key size
|
||||
packet.writeD(_purgeData != null ? _purgeData.getPoints() : 0); // 1000000 = 100 percent
|
||||
packet.writeD(_purgeData != null ? _purgeData.getKeys() : 0);
|
||||
packet.writeD(_player == null ? 0 : _player.getPurgeLastCategory());
|
||||
packet.writeD(_purgeData == null ? 0 : _purgeData.getPoints()); // 1000000 = 100 percent
|
||||
packet.writeD(_purgeData == null ? 0 : _purgeData.getKeys());
|
||||
packet.writeD(0);
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user