package net.sf.l2j.gameserver.model;
import java.util.StringTokenizer;
import java.util.logging.Logger;
import net.sf.l2j.gameserver.ItemTable;
import net.sf.l2j.gameserver.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.templates.L2NpcTemplate;
public class L2CastleChamberlainInstance extends L2NpcInstance
{
private static Logger _log = Logger.getLogger(L2CastleChamberlainInstance.class.getName());
private static int _castle = -1; // chamberlain castle
public L2CastleChamberlainInstance(int objectId, L2NpcTemplate template)
{
super(objectId, template);
switch(template.npcId)
{
case 12255:
_castle = 5; // aden
break;
case 12252:
_castle = 2; // gludio
default:
}
}
public void onBypassFeedback(L2PcInstance player, String command)
{
// normally, we shouldn't recive 'bypass' if talker != castle owner
// only castle owner allowed to talk with chamberlain
if(player.getClan().getHasCastle() != _castle)
{
_log.info("Player "+player.getName()+" trying to exploit castle chamberlain, ban this player!");
return;
}
//TODO: remove 'chat' handler, not requires overriding
if (command.startsWith("Chat"))
{
int val = Integer.parseInt(command.substring(5));
showChatWindow(player, val);
}
else if(command.startsWith("manor")) // manor control
{
StringTokenizer st = new StringTokenizer(command);
int val = Integer.parseInt(st.nextToken().substring(6));
switch(val)
{
case 1: // view/edit manor stats
//showChatWindow(player,L2Manor.getInstance().getCropReward(_castle));
NpcHtmlMessage msg = new NpcHtmlMessage(1);
msg.setHtml(L2World.getInstance().getCastle(_castle).getRewards().replace("%objectId%",String.valueOf(getObjectId())));
player.sendPacket(msg);
player.sendPacket(new ActionFailed());
break;
case 2: // set reward type
int cropId = Integer.parseInt(st.nextToken());
int reward = Integer.parseInt(st.nextToken());
L2World.getInstance().getCastle(_castle).setRewardType(cropId,reward);
break;
case 3: // edit reward
int crop = Integer.parseInt(st.nextToken());
int currentReward = Integer.parseInt(st.nextToken());
msg = new NpcHtmlMessage(1);
msg.setHtml(pageEditManor(crop,currentReward));
player.sendPacket(msg);
player.sendPacket(new ActionFailed());
break;
default:
_log.info("Invalid bypass "+command+" by "+player.getName()+", hack?");
}
}
else if(command.startsWith("tax")) // tax rates control
{
StringTokenizer st = new StringTokenizer(command);
int val = Integer.parseInt(st.nextToken().substring(4));
switch(val)
{
case 1: // show current tax rates
int currentRate = L2World.getInstance().getCastle(_castle).getTaxRate();
NpcHtmlMessage msg = new NpcHtmlMessage(1);
msg.setHtml("
Current tax rate: "+currentRate+"");
player.sendPacket(msg);
player.sendPacket(new ActionFailed());
break;
case 2: // adjust tax rates
int newRate = Integer.parseInt(st.nextToken());
L2World.getInstance().getCastle(_castle).setTaxRate(newRate);
break;
default:
_log.info("Invalid bypass "+command+" by "+player.getName()+", hack?");
}
}
else if(command.startsWith("move_out")) // move guests out of castle
{
}
}
public String getHtmlPath(int npcId, int val)
{
if(val !=0 )
return "data/html/chamberlain/" + npcId + "-" + val + ".htm";
else
return "data/html/chamberlain/" + npcId + ".htm";
}
public String pageEditManor(int crop, int current)
{
String text = "";
text += "| Crop | Type I reward | Type II reward |
";
text += "
";
String cropName = ItemTable.getInstance().getTemplate(crop).getName();
String reward1Name = ItemTable.getInstance().getTemplate(L2Manor.getInstance().getRewardItem(crop,1)).getName();
String reward2Name = ItemTable.getInstance().getTemplate(L2Manor.getInstance().getRewardItem(crop,2)).getName();
int reward1Amount = L2Manor.getInstance().getRewardAmount(crop,1);
int reward2Amount = L2Manor.getInstance().getRewardAmount(crop,2);
text += "| "+cropName+" | "+reward1Name+"/"+reward1Amount+" | "+reward2Name+"/"+reward2Amount+" |
";
text += "
";
return text;
}
}