Fixed next date for territory war not being set.

Contributed by Avanael.
This commit is contained in:
MobiusDevelopment
2020-01-15 10:43:15 +00:00
parent f8f0e4691a
commit 438370357a
4 changed files with 72 additions and 66 deletions

View File

@@ -19,8 +19,6 @@ package quests.TerritoryWarScripts;
import java.util.Calendar;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.instancemanager.CastleManager;
import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager;
import org.l2jmobius.gameserver.instancemanager.TerritoryWarManager;
import org.l2jmobius.gameserver.instancemanager.TerritoryWarManager.TerritoryNPCSpawn;
import org.l2jmobius.gameserver.model.TerritoryWard;
@@ -66,38 +64,12 @@ public class TerritoryWarSuperClass extends Quest
if (questId < 0)
{
// Outpost and Ward handled by the Super Class script
// Outpost and Ward handled by the Super Class script.
addSkillSeeId(36590);
// Calculate next TW date
final Calendar cal = Calendar.getInstance();
final long nextSiegeDate = GlobalVariablesManager.getInstance().getLong(TerritoryWarManager.GLOBAL_VARIABLE, 0);
if (nextSiegeDate > System.currentTimeMillis())
{
cal.setTimeInMillis(nextSiegeDate);
}
else
{
// Let's check if territory war date was in the past
if (cal.before(Calendar.getInstance()))
{
cal.setTimeInMillis(System.currentTimeMillis());
}
final boolean hasOwnedCastle = CastleManager.getInstance().hasOwnedCastle();
cal.set(Calendar.DAY_OF_WEEK, hasOwnedCastle ? Calendar.SATURDAY : Calendar.SUNDAY);
cal.set(Calendar.HOUR_OF_DAY, hasOwnedCastle ? 20 : 22);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
if (cal.before(Calendar.getInstance()))
{
cal.add(Calendar.WEEK_OF_YEAR, 2);
}
GlobalVariablesManager.getInstance().set(TerritoryWarManager.GLOBAL_VARIABLE, cal.getTimeInMillis());
}
TerritoryWarManager.getInstance().setTWStartTimeInMillis(cal.getTimeInMillis());
LOGGER.info(getClass().getSimpleName() + ": Siege date: " + cal.getTime());
// Calculate next TW date.
TerritoryWarManager.getInstance().setNextTWDate();
LOGGER.info(getClass().getSimpleName() + ": Siege date: " + TerritoryWarManager.getInstance().getTWStart().getTime());
}
}

View File

@@ -1108,11 +1108,42 @@ public class TerritoryWarManager implements Siegable
}
}
// change next TW date
// Change next TW date.
setNextTWDate();
final SystemMessage sm = new SystemMessage(SystemMessageId.TERRITORY_WAR_HAS_ENDED);
Broadcast.toAllOnlinePlayers(sm);
}
public void setNextTWDate()
{
final Calendar cal = Calendar.getInstance();
final long nextSiegeDate = GlobalVariablesManager.getInstance().getLong(GLOBAL_VARIABLE, 0);
if (nextSiegeDate > System.currentTimeMillis())
{
cal.setTimeInMillis(nextSiegeDate);
}
else
{
// Let's check if territory war date was in the past.
if (cal.before(Calendar.getInstance()))
{
cal.setTimeInMillis(System.currentTimeMillis());
}
final boolean hasOwnedCastle = CastleManager.getInstance().hasOwnedCastle();
cal.set(Calendar.DAY_OF_WEEK, hasOwnedCastle ? Calendar.SATURDAY : Calendar.SUNDAY);
cal.set(Calendar.HOUR_OF_DAY, hasOwnedCastle ? 20 : 22);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
if (cal.before(Calendar.getInstance()))
{
cal.add(Calendar.WEEK_OF_YEAR, 2);
}
GlobalVariablesManager.getInstance().set(GLOBAL_VARIABLE, cal.getTimeInMillis());
}
setTWStartTimeInMillis(cal.getTimeInMillis());
}
protected void updatePlayerTWStateFlags(boolean clear)
{
final Quest twQuest = QuestManager.getInstance().getQuest(qn);

View File

@@ -19,8 +19,6 @@ package quests.TerritoryWarScripts;
import java.util.Calendar;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.instancemanager.CastleManager;
import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager;
import org.l2jmobius.gameserver.instancemanager.TerritoryWarManager;
import org.l2jmobius.gameserver.instancemanager.TerritoryWarManager.TerritoryNPCSpawn;
import org.l2jmobius.gameserver.model.TerritoryWard;
@@ -66,38 +64,12 @@ public class TerritoryWarSuperClass extends Quest
if (questId < 0)
{
// Outpost and Ward handled by the Super Class script
// Outpost and Ward handled by the Super Class script.
addSkillSeeId(36590);
// Calculate next TW date
final Calendar cal = Calendar.getInstance();
final long nextSiegeDate = GlobalVariablesManager.getInstance().getLong(TerritoryWarManager.GLOBAL_VARIABLE, 0);
if (nextSiegeDate > System.currentTimeMillis())
{
cal.setTimeInMillis(nextSiegeDate);
}
else
{
// Let's check if territory war date was in the past
if (cal.before(Calendar.getInstance()))
{
cal.setTimeInMillis(System.currentTimeMillis());
}
final boolean hasOwnedCastle = CastleManager.getInstance().hasOwnedCastle();
cal.set(Calendar.DAY_OF_WEEK, hasOwnedCastle ? Calendar.SATURDAY : Calendar.SUNDAY);
cal.set(Calendar.HOUR_OF_DAY, hasOwnedCastle ? 20 : 22);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
if (cal.before(Calendar.getInstance()))
{
cal.add(Calendar.WEEK_OF_YEAR, 2);
}
GlobalVariablesManager.getInstance().set(TerritoryWarManager.GLOBAL_VARIABLE, cal.getTimeInMillis());
}
TerritoryWarManager.getInstance().setTWStartTimeInMillis(cal.getTimeInMillis());
LOGGER.info(getClass().getSimpleName() + ": Siege date: " + cal.getTime());
// Calculate next TW date.
TerritoryWarManager.getInstance().setNextTWDate();
LOGGER.info(getClass().getSimpleName() + ": Siege date: " + TerritoryWarManager.getInstance().getTWStart().getTime());
}
}

View File

@@ -1108,11 +1108,42 @@ public class TerritoryWarManager implements Siegable
}
}
// change next TW date
// Change next TW date.
setNextTWDate();
final SystemMessage sm = new SystemMessage(SystemMessageId.TERRITORY_WAR_HAS_ENDED);
Broadcast.toAllOnlinePlayers(sm);
}
public void setNextTWDate()
{
final Calendar cal = Calendar.getInstance();
final long nextSiegeDate = GlobalVariablesManager.getInstance().getLong(GLOBAL_VARIABLE, 0);
if (nextSiegeDate > System.currentTimeMillis())
{
cal.setTimeInMillis(nextSiegeDate);
}
else
{
// Let's check if territory war date was in the past.
if (cal.before(Calendar.getInstance()))
{
cal.setTimeInMillis(System.currentTimeMillis());
}
final boolean hasOwnedCastle = CastleManager.getInstance().hasOwnedCastle();
cal.set(Calendar.DAY_OF_WEEK, hasOwnedCastle ? Calendar.SATURDAY : Calendar.SUNDAY);
cal.set(Calendar.HOUR_OF_DAY, hasOwnedCastle ? 20 : 22);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
if (cal.before(Calendar.getInstance()))
{
cal.add(Calendar.WEEK_OF_YEAR, 2);
}
GlobalVariablesManager.getInstance().set(GLOBAL_VARIABLE, cal.getTimeInMillis());
}
setTWStartTimeInMillis(cal.getTimeInMillis());
}
protected void updatePlayerTWStateFlags(boolean clear)
{
final Quest twQuest = QuestManager.getInstance().getQuest(qn);