package com.l2jserver.gameserver.model.entity; import com.l2jserver.gameserver.ThreadPoolManager; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket; import java.util.Calendar; import java.util.concurrent.TimeUnit; import java.util.logging.Logger; public final class PvPZombieOperator implements Runnable { /** * PvPゾンビから回復するモード */ public static final int MODE_purificationPvpZombie = 1; /** * PvPゾンビにするモード */ public static final int MODE_pollutionPvpZombie = 2; private L2PcInstance _playerInstance = null; private int _operation = 0; private int _purificationPvpZombieDelaySec = 3*60*1000; /** * Initialize the teleporter and start the delayed task. * @param playerInstance * @param operation */ public PvPZombieOperator(L2PcInstance playerInstance,int operation) { _playerInstance = playerInstance; _operation = operation; switch (_operation){ // PvPゾンビから回復する case MODE_purificationPvpZombie: long pvPDeathDate = Calendar.getInstance().getTimeInMillis() - playerInstance.getPvPDeathDate(); long delay = _purificationPvpZombieDelaySec - pvPDeathDate; if(delay < 1){ this.run(); } else{ doScheduleSet(delay); } break; // PvPゾンビにする case MODE_pollutionPvpZombie: Logger.getLogger(L2GameClientPacket.class.getName()).warning("MODE_pollutionPvpZombie!"); doScheduleSet(5000); // 5秒 break; } } public void doScheduleSet(long delay){ ThreadPoolManager.getInstance().scheduleGeneral(this, delay, TimeUnit.MILLISECONDS); } @Override public void run() { if (_playerInstance == null) { return; } switch (_operation){ case MODE_purificationPvpZombie: if(!_playerInstance.isPvPZombie()) return; // 何らかの条件でゾンビから既に回復している場合は終了 _playerInstance.sendMessage("ゾンビから回復しました"); _playerInstance.setPvpZombie(false); break; case MODE_pollutionPvpZombie: if(_playerInstance.isPvPZombie()) return; // 何らかの条件でゾンビ場合だった時は終了 _playerInstance.sendMessage("貴方はゾンビになりました。"); _playerInstance.setPvpZombie(true); break; } } }