Fixed restoring experience gain prohibition.
This commit is contained in:
		| @@ -17,12 +17,7 @@ | ||||
| package handlers.usercommandhandlers; | ||||
|  | ||||
| import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; | ||||
| import org.l2jmobius.gameserver.model.actor.Playable; | ||||
| import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; | ||||
| import org.l2jmobius.gameserver.model.events.EventType; | ||||
| import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; | ||||
| import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener; | ||||
| import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; | ||||
|  | ||||
| /** | ||||
|  * @author xban1x | ||||
| @@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler | ||||
| 		{ | ||||
| 			if (!player.getVariables().getBoolean("EXPOFF", false)) | ||||
| 			{ | ||||
| 				player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this)); | ||||
| 				player.disableExpGain(); | ||||
| 				player.getVariables().set("EXPOFF", true); | ||||
| 				player.sendMessage("Experience gain is disabled."); | ||||
| 			} | ||||
| @@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler | ||||
| 		{ | ||||
| 			if (player.getVariables().getBoolean("EXPOFF", false)) | ||||
| 			{ | ||||
| 				player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this); | ||||
| 				player.enableExpGain(); | ||||
| 				player.getVariables().set("EXPOFF", false); | ||||
| 				player.sendMessage("Experience gain is enabled."); | ||||
| 			} | ||||
| @@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler | ||||
| 		return true; | ||||
| 	} | ||||
| 	 | ||||
| 	private TerminateReturn onExperienceReceived(Playable playable) | ||||
| 	{ | ||||
| 		if (playable.isPlayer() && playable.getActingPlayer().isDead()) | ||||
| 		{ | ||||
| 			return new TerminateReturn(false, false, false); | ||||
| 		} | ||||
| 		return new TerminateReturn(true, true, true); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public String[] getVoicedCommandList() | ||||
| 	{ | ||||
|   | ||||
| @@ -195,6 +195,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; | ||||
| @@ -211,6 +213,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; | ||||
| @@ -13611,6 +13615,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 | ||||
|   | ||||
| @@ -613,6 +613,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.updateSymbolSealSkills(); | ||||
| 		 | ||||
| 		player.broadcastUserInfo(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDevelopment
					MobiusDevelopment