Proper remove or store servitor.

This commit is contained in:
MobiusDevelopment 2019-05-14 21:41:23 +00:00
parent e5bc00862c
commit 1b4a4bc697
24 changed files with 144 additions and 48 deletions

View File

@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CreatureAI;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.ai.SummonAI; import org.l2jmobius.gameserver.ai.SummonAI;
import org.l2jmobius.gameserver.data.sql.impl.CharSummonTable;
import org.l2jmobius.gameserver.data.xml.impl.ExperienceData; import org.l2jmobius.gameserver.data.xml.impl.ExperienceData;
import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.datatables.ItemTable;
import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.enums.InstanceType;
@ -404,6 +405,8 @@ public abstract class Summon extends Playable
getInventory().destroyAllItems("pet deleted", _owner, this); getInventory().destroyAllItems("pet deleted", _owner, this);
} }
decayMe(); decayMe();
CharSummonTable.getInstance().removeServitor(_owner, getObjectId());
} }
public void unSummon(PlayerInstance owner) public void unSummon(PlayerInstance owner)

View File

@ -188,9 +188,7 @@ public class ServitorInstance extends Summon implements Runnable
_summonLifeTask.cancel(false); _summonLifeTask.cancel(false);
} }
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
return true; return true;
} }
/** /**
@ -258,14 +256,21 @@ public class ServitorInstance extends Summon implements Runnable
@Override @Override
public void storeMe() public void storeMe()
{ {
if ((_referenceSkill == 0) || isDead()) if (_referenceSkill == 0)
{ {
return; return;
} }
if (Config.RESTORE_SERVITOR_ON_RECONNECT) if (Config.RESTORE_SERVITOR_ON_RECONNECT)
{ {
CharSummonTable.getInstance().saveSummon(this); if (isDead())
{
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
}
else
{
CharSummonTable.getInstance().saveSummon(this);
}
} }
} }

View File

@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CreatureAI;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.ai.SummonAI; import org.l2jmobius.gameserver.ai.SummonAI;
import org.l2jmobius.gameserver.data.sql.impl.CharSummonTable;
import org.l2jmobius.gameserver.data.xml.impl.ExperienceData; import org.l2jmobius.gameserver.data.xml.impl.ExperienceData;
import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.datatables.ItemTable;
import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.enums.InstanceType;
@ -404,6 +405,8 @@ public abstract class Summon extends Playable
getInventory().destroyAllItems("pet deleted", _owner, this); getInventory().destroyAllItems("pet deleted", _owner, this);
} }
decayMe(); decayMe();
CharSummonTable.getInstance().removeServitor(_owner, getObjectId());
} }
public void unSummon(PlayerInstance owner) public void unSummon(PlayerInstance owner)

View File

@ -188,9 +188,7 @@ public class ServitorInstance extends Summon implements Runnable
_summonLifeTask.cancel(false); _summonLifeTask.cancel(false);
} }
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
return true; return true;
} }
/** /**
@ -258,14 +256,21 @@ public class ServitorInstance extends Summon implements Runnable
@Override @Override
public void storeMe() public void storeMe()
{ {
if ((_referenceSkill == 0) || isDead()) if (_referenceSkill == 0)
{ {
return; return;
} }
if (Config.RESTORE_SERVITOR_ON_RECONNECT) if (Config.RESTORE_SERVITOR_ON_RECONNECT)
{ {
CharSummonTable.getInstance().saveSummon(this); if (isDead())
{
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
}
else
{
CharSummonTable.getInstance().saveSummon(this);
}
} }
} }

View File

@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CreatureAI;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.ai.SummonAI; import org.l2jmobius.gameserver.ai.SummonAI;
import org.l2jmobius.gameserver.data.sql.impl.CharSummonTable;
import org.l2jmobius.gameserver.data.xml.impl.ExperienceData; import org.l2jmobius.gameserver.data.xml.impl.ExperienceData;
import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.datatables.ItemTable;
import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.enums.InstanceType;
@ -404,6 +405,8 @@ public abstract class Summon extends Playable
getInventory().destroyAllItems("pet deleted", _owner, this); getInventory().destroyAllItems("pet deleted", _owner, this);
} }
decayMe(); decayMe();
CharSummonTable.getInstance().removeServitor(_owner, getObjectId());
} }
public void unSummon(PlayerInstance owner) public void unSummon(PlayerInstance owner)

View File

@ -188,9 +188,7 @@ public class ServitorInstance extends Summon implements Runnable
_summonLifeTask.cancel(false); _summonLifeTask.cancel(false);
} }
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
return true; return true;
} }
/** /**
@ -258,14 +256,21 @@ public class ServitorInstance extends Summon implements Runnable
@Override @Override
public void storeMe() public void storeMe()
{ {
if ((_referenceSkill == 0) || isDead()) if (_referenceSkill == 0)
{ {
return; return;
} }
if (Config.RESTORE_SERVITOR_ON_RECONNECT) if (Config.RESTORE_SERVITOR_ON_RECONNECT)
{ {
CharSummonTable.getInstance().saveSummon(this); if (isDead())
{
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
}
else
{
CharSummonTable.getInstance().saveSummon(this);
}
} }
} }

View File

@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CreatureAI;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.ai.SummonAI; import org.l2jmobius.gameserver.ai.SummonAI;
import org.l2jmobius.gameserver.data.sql.impl.CharSummonTable;
import org.l2jmobius.gameserver.data.xml.impl.ExperienceData; import org.l2jmobius.gameserver.data.xml.impl.ExperienceData;
import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.datatables.ItemTable;
import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.enums.InstanceType;
@ -404,6 +405,8 @@ public abstract class Summon extends Playable
getInventory().destroyAllItems("pet deleted", _owner, this); getInventory().destroyAllItems("pet deleted", _owner, this);
} }
decayMe(); decayMe();
CharSummonTable.getInstance().removeServitor(_owner, getObjectId());
} }
public void unSummon(PlayerInstance owner) public void unSummon(PlayerInstance owner)

View File

@ -188,9 +188,7 @@ public class ServitorInstance extends Summon implements Runnable
_summonLifeTask.cancel(false); _summonLifeTask.cancel(false);
} }
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
return true; return true;
} }
/** /**
@ -258,14 +256,21 @@ public class ServitorInstance extends Summon implements Runnable
@Override @Override
public void storeMe() public void storeMe()
{ {
if ((_referenceSkill == 0) || isDead()) if (_referenceSkill == 0)
{ {
return; return;
} }
if (Config.RESTORE_SERVITOR_ON_RECONNECT) if (Config.RESTORE_SERVITOR_ON_RECONNECT)
{ {
CharSummonTable.getInstance().saveSummon(this); if (isDead())
{
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
}
else
{
CharSummonTable.getInstance().saveSummon(this);
}
} }
} }

View File

@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CreatureAI;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.ai.SummonAI; import org.l2jmobius.gameserver.ai.SummonAI;
import org.l2jmobius.gameserver.data.sql.impl.CharSummonTable;
import org.l2jmobius.gameserver.data.xml.impl.ExperienceData; import org.l2jmobius.gameserver.data.xml.impl.ExperienceData;
import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.datatables.ItemTable;
import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.enums.InstanceType;
@ -404,6 +405,8 @@ public abstract class Summon extends Playable
getInventory().destroyAllItems("pet deleted", _owner, this); getInventory().destroyAllItems("pet deleted", _owner, this);
} }
decayMe(); decayMe();
CharSummonTable.getInstance().removeServitor(_owner, getObjectId());
} }
public void unSummon(PlayerInstance owner) public void unSummon(PlayerInstance owner)

View File

@ -188,9 +188,7 @@ public class ServitorInstance extends Summon implements Runnable
_summonLifeTask.cancel(false); _summonLifeTask.cancel(false);
} }
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
return true; return true;
} }
/** /**
@ -258,14 +256,21 @@ public class ServitorInstance extends Summon implements Runnable
@Override @Override
public void storeMe() public void storeMe()
{ {
if ((_referenceSkill == 0) || isDead()) if (_referenceSkill == 0)
{ {
return; return;
} }
if (Config.RESTORE_SERVITOR_ON_RECONNECT) if (Config.RESTORE_SERVITOR_ON_RECONNECT)
{ {
CharSummonTable.getInstance().saveSummon(this); if (isDead())
{
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
}
else
{
CharSummonTable.getInstance().saveSummon(this);
}
} }
} }

View File

@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CreatureAI;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.ai.SummonAI; import org.l2jmobius.gameserver.ai.SummonAI;
import org.l2jmobius.gameserver.data.sql.impl.CharSummonTable;
import org.l2jmobius.gameserver.data.xml.impl.ExperienceData; import org.l2jmobius.gameserver.data.xml.impl.ExperienceData;
import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.datatables.ItemTable;
import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.enums.InstanceType;
@ -404,6 +405,8 @@ public abstract class Summon extends Playable
getInventory().destroyAllItems("pet deleted", _owner, this); getInventory().destroyAllItems("pet deleted", _owner, this);
} }
decayMe(); decayMe();
CharSummonTable.getInstance().removeServitor(_owner, getObjectId());
} }
public void unSummon(PlayerInstance owner) public void unSummon(PlayerInstance owner)

View File

@ -188,9 +188,7 @@ public class ServitorInstance extends Summon implements Runnable
_summonLifeTask.cancel(false); _summonLifeTask.cancel(false);
} }
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
return true; return true;
} }
/** /**
@ -258,14 +256,21 @@ public class ServitorInstance extends Summon implements Runnable
@Override @Override
public void storeMe() public void storeMe()
{ {
if ((_referenceSkill == 0) || isDead()) if (_referenceSkill == 0)
{ {
return; return;
} }
if (Config.RESTORE_SERVITOR_ON_RECONNECT) if (Config.RESTORE_SERVITOR_ON_RECONNECT)
{ {
CharSummonTable.getInstance().saveSummon(this); if (isDead())
{
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
}
else
{
CharSummonTable.getInstance().saveSummon(this);
}
} }
} }

View File

@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CreatureAI;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.ai.SummonAI; import org.l2jmobius.gameserver.ai.SummonAI;
import org.l2jmobius.gameserver.data.sql.impl.CharSummonTable;
import org.l2jmobius.gameserver.data.xml.impl.ExperienceData; import org.l2jmobius.gameserver.data.xml.impl.ExperienceData;
import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.datatables.ItemTable;
import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.enums.InstanceType;
@ -404,6 +405,8 @@ public abstract class Summon extends Playable
getInventory().destroyAllItems("pet deleted", _owner, this); getInventory().destroyAllItems("pet deleted", _owner, this);
} }
decayMe(); decayMe();
CharSummonTable.getInstance().removeServitor(_owner, getObjectId());
} }
public void unSummon(PlayerInstance owner) public void unSummon(PlayerInstance owner)

View File

@ -188,9 +188,7 @@ public class ServitorInstance extends Summon implements Runnable
_summonLifeTask.cancel(false); _summonLifeTask.cancel(false);
} }
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
return true; return true;
} }
/** /**
@ -258,14 +256,21 @@ public class ServitorInstance extends Summon implements Runnable
@Override @Override
public void storeMe() public void storeMe()
{ {
if ((_referenceSkill == 0) || isDead()) if (_referenceSkill == 0)
{ {
return; return;
} }
if (Config.RESTORE_SERVITOR_ON_RECONNECT) if (Config.RESTORE_SERVITOR_ON_RECONNECT)
{ {
CharSummonTable.getInstance().saveSummon(this); if (isDead())
{
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
}
else
{
CharSummonTable.getInstance().saveSummon(this);
}
} }
} }

View File

@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CreatureAI;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.ai.SummonAI; import org.l2jmobius.gameserver.ai.SummonAI;
import org.l2jmobius.gameserver.data.sql.impl.CharSummonTable;
import org.l2jmobius.gameserver.data.xml.impl.ExperienceData; import org.l2jmobius.gameserver.data.xml.impl.ExperienceData;
import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.datatables.ItemTable;
import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.enums.InstanceType;
@ -404,6 +405,8 @@ public abstract class Summon extends Playable
getInventory().destroyAllItems("pet deleted", _owner, this); getInventory().destroyAllItems("pet deleted", _owner, this);
} }
decayMe(); decayMe();
CharSummonTable.getInstance().removeServitor(_owner, getObjectId());
} }
public void unSummon(PlayerInstance owner) public void unSummon(PlayerInstance owner)

View File

@ -188,9 +188,7 @@ public class ServitorInstance extends Summon implements Runnable
_summonLifeTask.cancel(false); _summonLifeTask.cancel(false);
} }
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
return true; return true;
} }
/** /**
@ -258,14 +256,21 @@ public class ServitorInstance extends Summon implements Runnable
@Override @Override
public void storeMe() public void storeMe()
{ {
if ((_referenceSkill == 0) || isDead()) if (_referenceSkill == 0)
{ {
return; return;
} }
if (Config.RESTORE_SERVITOR_ON_RECONNECT) if (Config.RESTORE_SERVITOR_ON_RECONNECT)
{ {
CharSummonTable.getInstance().saveSummon(this); if (isDead())
{
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
}
else
{
CharSummonTable.getInstance().saveSummon(this);
}
} }
} }

View File

@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CreatureAI;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.ai.SummonAI; import org.l2jmobius.gameserver.ai.SummonAI;
import org.l2jmobius.gameserver.data.sql.impl.CharSummonTable;
import org.l2jmobius.gameserver.data.xml.impl.ExperienceData; import org.l2jmobius.gameserver.data.xml.impl.ExperienceData;
import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.datatables.ItemTable;
import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.enums.InstanceType;
@ -404,6 +405,8 @@ public abstract class Summon extends Playable
getInventory().destroyAllItems("pet deleted", _owner, this); getInventory().destroyAllItems("pet deleted", _owner, this);
} }
decayMe(); decayMe();
CharSummonTable.getInstance().removeServitor(_owner, getObjectId());
} }
public void unSummon(PlayerInstance owner) public void unSummon(PlayerInstance owner)

View File

@ -188,9 +188,7 @@ public class ServitorInstance extends Summon implements Runnable
_summonLifeTask.cancel(false); _summonLifeTask.cancel(false);
} }
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
return true; return true;
} }
/** /**
@ -258,14 +256,21 @@ public class ServitorInstance extends Summon implements Runnable
@Override @Override
public void storeMe() public void storeMe()
{ {
if ((_referenceSkill == 0) || isDead()) if (_referenceSkill == 0)
{ {
return; return;
} }
if (Config.RESTORE_SERVITOR_ON_RECONNECT) if (Config.RESTORE_SERVITOR_ON_RECONNECT)
{ {
CharSummonTable.getInstance().saveSummon(this); if (isDead())
{
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
}
else
{
CharSummonTable.getInstance().saveSummon(this);
}
} }
} }

View File

@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CreatureAI;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.ai.SummonAI; import org.l2jmobius.gameserver.ai.SummonAI;
import org.l2jmobius.gameserver.data.sql.impl.CharSummonTable;
import org.l2jmobius.gameserver.data.xml.impl.ExperienceData; import org.l2jmobius.gameserver.data.xml.impl.ExperienceData;
import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.datatables.ItemTable;
import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.enums.InstanceType;
@ -404,6 +405,8 @@ public abstract class Summon extends Playable
getInventory().destroyAllItems("pet deleted", _owner, this); getInventory().destroyAllItems("pet deleted", _owner, this);
} }
decayMe(); decayMe();
CharSummonTable.getInstance().removeServitor(_owner, getObjectId());
} }
public void unSummon(PlayerInstance owner) public void unSummon(PlayerInstance owner)

View File

@ -188,9 +188,7 @@ public class ServitorInstance extends Summon implements Runnable
_summonLifeTask.cancel(false); _summonLifeTask.cancel(false);
} }
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
return true; return true;
} }
/** /**
@ -258,14 +256,21 @@ public class ServitorInstance extends Summon implements Runnable
@Override @Override
public void storeMe() public void storeMe()
{ {
if ((_referenceSkill == 0) || isDead()) if (_referenceSkill == 0)
{ {
return; return;
} }
if (Config.RESTORE_SERVITOR_ON_RECONNECT) if (Config.RESTORE_SERVITOR_ON_RECONNECT)
{ {
CharSummonTable.getInstance().saveSummon(this); if (isDead())
{
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
}
else
{
CharSummonTable.getInstance().saveSummon(this);
}
} }
} }

View File

@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CreatureAI;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.ai.SummonAI; import org.l2jmobius.gameserver.ai.SummonAI;
import org.l2jmobius.gameserver.data.sql.impl.CharSummonTable;
import org.l2jmobius.gameserver.data.xml.impl.ExperienceData; import org.l2jmobius.gameserver.data.xml.impl.ExperienceData;
import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.datatables.ItemTable;
import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.enums.InstanceType;
@ -404,6 +405,8 @@ public abstract class Summon extends Playable
getInventory().destroyAllItems("pet deleted", _owner, this); getInventory().destroyAllItems("pet deleted", _owner, this);
} }
decayMe(); decayMe();
CharSummonTable.getInstance().removeServitor(_owner, getObjectId());
} }
public void unSummon(PlayerInstance owner) public void unSummon(PlayerInstance owner)

View File

@ -188,9 +188,7 @@ public class ServitorInstance extends Summon implements Runnable
_summonLifeTask.cancel(false); _summonLifeTask.cancel(false);
} }
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
return true; return true;
} }
/** /**
@ -258,14 +256,21 @@ public class ServitorInstance extends Summon implements Runnable
@Override @Override
public void storeMe() public void storeMe()
{ {
if ((_referenceSkill == 0) || isDead()) if (_referenceSkill == 0)
{ {
return; return;
} }
if (Config.RESTORE_SERVITOR_ON_RECONNECT) if (Config.RESTORE_SERVITOR_ON_RECONNECT)
{ {
CharSummonTable.getInstance().saveSummon(this); if (isDead())
{
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
}
else
{
CharSummonTable.getInstance().saveSummon(this);
}
} }
} }

View File

@ -22,6 +22,7 @@ import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CreatureAI;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.ai.SummonAI; import org.l2jmobius.gameserver.ai.SummonAI;
import org.l2jmobius.gameserver.data.sql.impl.CharSummonTable;
import org.l2jmobius.gameserver.data.xml.impl.ExperienceData; import org.l2jmobius.gameserver.data.xml.impl.ExperienceData;
import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.datatables.ItemTable;
import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.enums.InstanceType;
@ -404,6 +405,8 @@ public abstract class Summon extends Playable
getInventory().destroyAllItems("pet deleted", _owner, this); getInventory().destroyAllItems("pet deleted", _owner, this);
} }
decayMe(); decayMe();
CharSummonTable.getInstance().removeServitor(_owner, getObjectId());
} }
public void unSummon(PlayerInstance owner) public void unSummon(PlayerInstance owner)

View File

@ -188,9 +188,7 @@ public class ServitorInstance extends Summon implements Runnable
_summonLifeTask.cancel(false); _summonLifeTask.cancel(false);
} }
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
return true; return true;
} }
/** /**
@ -258,14 +256,21 @@ public class ServitorInstance extends Summon implements Runnable
@Override @Override
public void storeMe() public void storeMe()
{ {
if ((_referenceSkill == 0) || isDead()) if (_referenceSkill == 0)
{ {
return; return;
} }
if (Config.RESTORE_SERVITOR_ON_RECONNECT) if (Config.RESTORE_SERVITOR_ON_RECONNECT)
{ {
CharSummonTable.getInstance().saveSummon(this); if (isDead())
{
CharSummonTable.getInstance().removeServitor(getOwner(), getObjectId());
}
else
{
CharSummonTable.getInstance().saveSummon(this);
}
} }
} }