/*
* Copyright (C) 2004-2013 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack 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.
*
* L2J DataPack 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 .
*/
package handlers.effecthandlers;
import java.util.ArrayList;
import com.l2jserver.gameserver.datatables.BotReportTable;
import com.l2jserver.gameserver.instancemanager.PunishmentManager;
import com.l2jserver.gameserver.model.effects.EffectTemplate;
import com.l2jserver.gameserver.model.effects.L2Effect;
import com.l2jserver.gameserver.model.effects.L2EffectType;
import com.l2jserver.gameserver.model.punishment.PunishmentAffect;
import com.l2jserver.gameserver.model.punishment.PunishmentTask;
import com.l2jserver.gameserver.model.punishment.PunishmentType;
import com.l2jserver.gameserver.model.stats.Env;
/**
* @author BiggBoss
*/
public final class BlockAction extends L2Effect
{
private final ArrayList _blockedActions;
/**
* @param env
* @param template
*/
public BlockAction(Env env, EffectTemplate template)
{
super(env, template);
String[] rawActions = template.getParameters().getString("blockedActions").split(",");
_blockedActions = new ArrayList<>(rawActions.length);
for (String act : rawActions)
{
int id = -1;
try
{
id = Integer.parseInt(act);
_blockedActions.add(id);
}
catch (Exception e)
{
}
}
}
@Override
public boolean onStart()
{
if ((getEffected() == null) || !getEffected().isPlayer())
{
return false;
}
if (_blockedActions.contains(BotReportTable.PARTY_ACTION_BLOCK_ID))
{
PunishmentManager.getInstance().startPunishment(new PunishmentTask(0, getEffected().getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.PARTY_BAN, 0, "block action debuff", "system", true));
}
if (_blockedActions.contains(BotReportTable.CHAT_BLOCK_ID))
{
PunishmentManager.getInstance().startPunishment(new PunishmentTask(0, getEffected().getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.CHAT_BAN, 0, "block action debuff", "system", true));
}
return true;
}
@Override
public void onExit()
{
if (_blockedActions.contains(BotReportTable.PARTY_ACTION_BLOCK_ID))
{
PunishmentManager.getInstance().stopPunishment(getEffected().getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.PARTY_BAN);
}
if (_blockedActions.contains(BotReportTable.CHAT_BLOCK_ID))
{
PunishmentManager.getInstance().stopPunishment(getEffected().getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.CHAT_BAN);
}
}
@Override
public boolean checkCondition(Object id)
{
return !_blockedActions.contains(id);
}
@Override
public L2EffectType getEffectType()
{
return L2EffectType.ACTION_BLOCK;
}
}