Minor quest related improvements.
This commit is contained in:
parent
79d7a6c199
commit
fc9a2c6644
@ -73,10 +73,7 @@ public class Quest extends ManagedScript
|
|||||||
private final String _prefixPath; // used only for admin_quest_reload
|
private final String _prefixPath; // used only for admin_quest_reload
|
||||||
private final String _descr;
|
private final String _descr;
|
||||||
private final byte _initialState = State.CREATED;
|
private final byte _initialState = State.CREATED;
|
||||||
// NOTE: questItemIds will be overriden by child classes. Ideally, it should be protected instead of public.
|
protected int[] questItemIds = null;
|
||||||
// However, quest scripts written in Jython will have trouble with protected, as Jython only knows private and public...
|
|
||||||
// In fact, protected will typically be considered private thus breaking the scripts. Leave this as public as a workaround.
|
|
||||||
public int[] questItemIds = null;
|
|
||||||
|
|
||||||
// Dimensional Diamond Rewards by Class for 2nd class transfer quest (35)
|
// Dimensional Diamond Rewards by Class for 2nd class transfer quest (35)
|
||||||
protected static final Map<Integer, Integer> DF_REWARD_35 = new HashMap<>();
|
protected static final Map<Integer, Integer> DF_REWARD_35 = new HashMap<>();
|
||||||
|
@ -32,19 +32,8 @@ import org.l2jmobius.gameserver.model.spawn.Spawn;
|
|||||||
public class QuestSpawn
|
public class QuestSpawn
|
||||||
{
|
{
|
||||||
private final Logger LOGGER = Quest.LOGGER;
|
private final Logger LOGGER = Quest.LOGGER;
|
||||||
private static QuestSpawn instance;
|
|
||||||
|
|
||||||
public static QuestSpawn getInstance()
|
private class DeSpawnScheduleTimerTask implements Runnable
|
||||||
{
|
|
||||||
if (instance == null)
|
|
||||||
{
|
|
||||||
instance = new QuestSpawn();
|
|
||||||
}
|
|
||||||
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
public class DeSpawnScheduleTimerTask implements Runnable
|
|
||||||
{
|
{
|
||||||
NpcInstance _npc = null;
|
NpcInstance _npc = null;
|
||||||
|
|
||||||
@ -149,4 +138,14 @@ public class QuestSpawn
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static QuestSpawn getInstance()
|
||||||
|
{
|
||||||
|
return SingletonHolder.INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class SingletonHolder
|
||||||
|
{
|
||||||
|
protected static final QuestSpawn INSTANCE = new QuestSpawn();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,128 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package org.l2jmobius.gameserver.model.quest;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.l2jmobius.commons.concurrent.ThreadPool;
|
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
|
||||||
|
|
||||||
public class QuestStateManager
|
|
||||||
{
|
|
||||||
public class ScheduleTimerTask implements Runnable
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
cleanUp();
|
|
||||||
ThreadPool.schedule(new ScheduleTimerTask(), 60000);
|
|
||||||
}
|
|
||||||
catch (Throwable t)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<QuestState> _questStates = new ArrayList<>();
|
|
||||||
|
|
||||||
public QuestStateManager()
|
|
||||||
{
|
|
||||||
ThreadPool.schedule(new ScheduleTimerTask(), 60000);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add QuestState for the specified player instance
|
|
||||||
* @param quest
|
|
||||||
* @param player
|
|
||||||
* @param state
|
|
||||||
*/
|
|
||||||
public void addQuestState(Quest quest, PlayerInstance player, byte state)
|
|
||||||
{
|
|
||||||
QuestState qs = getQuestState(player);
|
|
||||||
if (qs == null)
|
|
||||||
{
|
|
||||||
qs = new QuestState(quest, player, state);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove all QuestState for all player instance that does not exist
|
|
||||||
*/
|
|
||||||
public void cleanUp()
|
|
||||||
{
|
|
||||||
for (int i = getQuestStates().size() - 1; i >= 0; i--)
|
|
||||||
{
|
|
||||||
if (getQuestStates().get(i).getPlayer() == null)
|
|
||||||
{
|
|
||||||
removeQuestState(getQuestStates().get(i));
|
|
||||||
getQuestStates().remove(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove QuestState instance
|
|
||||||
* @param qs
|
|
||||||
*/
|
|
||||||
private void removeQuestState(QuestState qs)
|
|
||||||
{
|
|
||||||
qs = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return QuestState for specified player instance
|
|
||||||
* @param player
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public QuestState getQuestState(PlayerInstance player)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < getQuestStates().size(); i++)
|
|
||||||
{
|
|
||||||
if ((getQuestStates().get(i).getPlayer() != null) && (getQuestStates().get(i).getPlayer().getObjectId() == player.getObjectId()))
|
|
||||||
{
|
|
||||||
return getQuestStates().get(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return all QuestState
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public List<QuestState> getQuestStates()
|
|
||||||
{
|
|
||||||
if (_questStates == null)
|
|
||||||
{
|
|
||||||
_questStates = new ArrayList<>();
|
|
||||||
}
|
|
||||||
return _questStates;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static QuestStateManager getInstance()
|
|
||||||
{
|
|
||||||
return SingletonHolder.INSTANCE;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class SingletonHolder
|
|
||||||
{
|
|
||||||
protected static final QuestStateManager INSTANCE = new QuestStateManager();
|
|
||||||
}
|
|
||||||
}
|
|
@ -17,7 +17,7 @@
|
|||||||
package org.l2jmobius.gameserver.model.quest;
|
package org.l2jmobius.gameserver.model.quest;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Luis Arias Functions in this class are used in python files
|
* @author Luis Arias
|
||||||
*/
|
*/
|
||||||
public class State
|
public class State
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user