Fixed restoring experience gain prohibition.

This commit is contained in:
MobiusDevelopment
2020-01-13 21:03:30 +00:00
parent fa2f3d7646
commit de47fedd21
51 changed files with 544 additions and 272 deletions

View File

@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -210,6 +212,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
@ -13655,6 +13659,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -612,6 +612,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))