package server.life; import client.MapleCharacter; import client.MapleClient; import server.maps.MapleMapObjectType; import server.quest.MapleQuest; import server.shop.MapleShopFactory; import tools.packet.NPCPacket; import java.util.List; public class MapleNPC extends AbstractLoadedMapleLife { private String name = "MISSION"; private boolean custom = false; private String questScript = ""; public MapleNPC(int id, String name) { super(id); this.name = name; } public void setScriptName(String name) { this.questScript = name; } public String getScriptName() { return this.questScript; } public boolean hasScriptQuest() { if (this.questScript == "") return false; // 检测脚本任务是否完成 // MapleQuest.getInstatce().canStart() return this.questScript != null; } /** * 检查是否有任务可以开始 * @param chr * @return */ public boolean hasQuest(MapleCharacter chr) { // 判断任务是否可以开始 int questId = this.getQuestId(); if (questId == 0) { return false; } return MapleQuest.getInstance(questId).canStart(chr,getId()); } public boolean hasCompleteQuest(MapleCharacter chr){ MapleQuest quest = chr.getQuestInfoById(getQuestId()); if (quest == null) { quest = new MapleQuest(getQuestId()); } return quest.start(chr,getId()); } public int getQuestId() { List<Integer> questIdList = MapleQuest.getInstatce().getQuestIdByNpcId(getId()); if (questIdList.size() > 0) { return questIdList.get(0); } else { return 0; } } public boolean hasShop() { return MapleShopFactory.getInstance().getShopForNPC(getId()) != null; } public void sendShop(MapleClient c) { MapleShopFactory.getInstance().getShopForNPC(getId()).sendShop(c); } public boolean isStorage(){ int npcid = getId(); return npcid==1012009 || npcid==1022005 || npcid==1032006 || npcid==1052017 || npcid==1061008 || npcid==2020004; } @Override public void sendSpawnData(MapleClient client) { if ((getId() >= 9901000) || (getId() == 9000069) || (getId() == 9000133)) { return; } client.getSession().write(NPCPacket.spawnNPC(this, true)); client.getSession().write(NPCPacket.spawnNPCRequestController(this, true)); } @Override public void sendDestroyData(MapleClient client) { client.getSession().write(NPCPacket.removeNPCController(getObjectId())); client.getSession().write(NPCPacket.removeNPC(getObjectId())); } @Override public MapleMapObjectType getType() { return MapleMapObjectType.NPC; } public String getName() { return this.name; } public void setName(String n) { this.name = n; } public boolean isCustom() { return this.custom; } public void setCustom(boolean custom) { this.custom = custom; } }