📄 c_npcaction.java
字号:
htmldata = makeWarTimeStrings(L1CastleLocation.KENT_CASTLE_ID);
htmlid = "ktguard7";
} else if (npc.getNpcTemplate().get_npcId() == 60560) { // オーク近衛兵
htmldata = makeWarTimeStrings(L1CastleLocation.OT_CASTLE_ID);
htmlid = "orcguard7";
} else if (npc.getNpcTemplate().get_npcId() == 60552) { // ウィンダウッド城近衛兵
htmldata = makeWarTimeStrings(L1CastleLocation.WW_CASTLE_ID);
htmlid = "wdguard7";
} else if (npc.getNpcTemplate().get_npcId() == 60524 || // ギラン街入り口近衛兵(弓)
npc.getNpcTemplate().get_npcId() == 60525 || // ギラン街入り口近衛兵
npc.getNpcTemplate().get_npcId() == 60529) { // ギラン城近衛兵
htmldata = makeWarTimeStrings(L1CastleLocation.GIRAN_CASTLE_ID);
htmlid = "grguard7";
} else if (npc.getNpcTemplate().get_npcId() == 70857) { // ハイネ城ハイネガード
htmldata = makeWarTimeStrings(L1CastleLocation.HEINE_CASTLE_ID);
htmlid = "heguard7";
} else if (npc.getNpcTemplate().get_npcId() == 60530 || // ドワーフ城ドワーフガード
npc.getNpcTemplate().get_npcId() == 60531) {
htmldata = makeWarTimeStrings(L1CastleLocation.DOWA_CASTLE_ID);
htmlid = "dcguard7";
} else if (npc.getNpcTemplate().get_npcId() == 60533 || // アデン城 ガード
npc.getNpcTemplate().get_npcId() == 60534) {
htmldata = makeWarTimeStrings(L1CastleLocation.ADEN_CASTLE_ID);
htmlid = "adguard7";
} else if (npc.getNpcTemplate().get_npcId() == 81156) { // アデン偵察兵(ディアド要塞)
htmldata = makeWarTimeStrings(L1CastleLocation.DIAD_CASTLE_ID);
htmlid = "dfguard3";
}
} else if (s.equalsIgnoreCase("inex")) { // 収入/支出の報告を受ける
// 暫定的に公金をチャットウィンドウに表示させる。
// メッセージは適当。
L1Clan clan = L1World.getInstance().getClan(pc.getClanname());
if (clan != null) {
int castle_id = clan.getCastleId();
if (castle_id != 0) { // 城主クラン
L1Castle l1castle = CastleTable.getInstance()
.getCastleTable(castle_id);
pc.sendPackets(new S_ServerMessage(309, // %0の精算総額は%1アデナです。
l1castle.getName(), String.valueOf(l1castle
.getPublicMoney())));
htmlid = ""; // ウィンドウを消す
}
}
} else if (s.equalsIgnoreCase("tax")) { // 税率を調節する
pc.sendPackets(new S_TaxRate(pc.getId()));
} else if (s.equalsIgnoreCase("withdrawal")) { // 資金を引き出す
L1Clan clan = L1World.getInstance().getClan(pc.getClanname());
if (clan != null) {
int castle_id = clan.getCastleId();
if (castle_id != 0) { // 城主クラン
L1Castle l1castle = CastleTable.getInstance()
.getCastleTable(castle_id);
pc.sendPackets(new S_Drawal(pc.getId(), l1castle
.getPublicMoney()));
}
}
} else if (s.equalsIgnoreCase("cdeposit")) { // 資金を入金する
pc.sendPackets(new S_Deposit(pc.getId()));
} else if (s.equalsIgnoreCase("employ")) { // 傭兵の雇用
} else if (s.equalsIgnoreCase("arrange")) { // 雇用した傭兵の配置
} else if (s.equalsIgnoreCase("castlegate")) { // 城門を管理する
repairGate(pc);
htmlid = ""; // ウィンドウを消す
} else if (s.equalsIgnoreCase("encw")) { // 武器専門家 / 武器の強化魔法を受ける
if (pc.getWeapon() == null) {
pc.sendPackets(new S_ServerMessage(79));
} else {
for (L1ItemInstance item : pc.getInventory().getItems()) {
if (pc.getWeapon().equals(item)) {
L1SkillUse l1skilluse = new L1SkillUse();
l1skilluse.handleCommands(pc, L1SkillId.ENCHANT_WEAPON,
item.getId(), 0, 0, null, 0,
L1SkillUse.TYPE_SPELLSC);
break;
}
}
}
htmlid = ""; // ウィンドウを消す
} else if (s.equalsIgnoreCase("enca")) { // 防具専門家 / 防具の強化魔法を受ける
L1ItemInstance item = pc.getInventory().getItemEquipped(2, 2);
if (item != null) {
L1SkillUse l1skilluse = new L1SkillUse();
l1skilluse.handleCommands(pc, L1SkillId.BLESSED_ARMOR, item
.getId(), 0, 0, null, 0, L1SkillUse.TYPE_SPELLSC);
} else {
pc.sendPackets(new S_ServerMessage(79));
}
htmlid = ""; // ウィンドウを消す
} else if (s.equalsIgnoreCase("depositnpc")) { // 「動物を預ける」
Object[] petList = pc.getPetList().values().toArray();
for (Object petObject : petList) {
if (petObject instanceof L1PetInstance) { // ペット
L1PetInstance pet = (L1PetInstance) petObject;
pet.collect();
pc.getPetList().remove(pet.getId());
pet.deleteMe();
}
}
htmlid = ""; // ウィンドウを消す
} else if (s.equalsIgnoreCase("withdrawnpc")) { // 「動物を受け取る」
pc.sendPackets(new S_PetList(objid, pc));
} else if (s.equalsIgnoreCase("changename")) { // 「名前を決める」
pc.setTempID(objid); // ペットのオブジェクトIDを保存しておく
pc.sendPackets(new S_Message_YN(325, "")); // 動物の名前を決めてください:
} else if (s.equalsIgnoreCase("attackchr")) {
if (obj instanceof L1Character) {
L1Character cha = (L1Character) obj;
pc.sendPackets(new S_SelectTarget(cha.getId()));
}
} else if (s.equalsIgnoreCase("select")) { // 競売掲示板のリストをクリック
pc.sendPackets(new S_AuctionBoardRead(objid, s2));
} else if (s.equalsIgnoreCase("map")) { // アジトの位置を確かめる
pc.sendPackets(new S_HouseMap(objid, s2));
} else if (s.equalsIgnoreCase("apply")) { // 競売に参加する
L1Clan clan = L1World.getInstance().getClan(pc.getClanname());
if (clan != null) {
if (pc.isCrown() && pc.getId() == clan.getLeaderId()) { // 君主、かつ、血盟主
if (pc.getLevel() >= 15) {
if (clan.getHouseId() == 0) {
pc.sendPackets(new S_ApplyAuction(objid, s2));
} else {
pc.sendPackets(new S_ServerMessage(521)); // すでに家を所有しています。
htmlid = ""; // ウィンドウを消す
}
} else {
pc.sendPackets(new S_ServerMessage(519)); // レベル15未満の君主は競売に参加できません。
htmlid = ""; // ウィンドウを消す
}
} else {
pc.sendPackets(new S_ServerMessage(518)); // この命令は血盟の君主のみが利用できます。
htmlid = ""; // ウィンドウを消す
}
} else {
pc.sendPackets(new S_ServerMessage(518)); // この命令は血盟の君主のみが利用できます。
htmlid = ""; // ウィンドウを消す
}
} else if (s.equalsIgnoreCase("open") // ドアを開ける
|| s.equalsIgnoreCase("close")) { // ドアを閉める
L1NpcInstance npc = (L1NpcInstance) obj;
openCloseDoor(pc, npc, s);
htmlid = ""; // ウィンドウを消す
} else if (s.equalsIgnoreCase("expel")) { // 外部の人間を追い出す
L1NpcInstance npc = (L1NpcInstance) obj;
expelOtherClan(pc, npc.getNpcTemplate().get_npcId());
htmlid = ""; // ウィンドウを消す
} else if (s.equalsIgnoreCase("pay")) { // 税金を納める
L1NpcInstance npc = (L1NpcInstance) obj;
htmldata = makeHouseTaxStrings(pc, npc);
htmlid = "agpay";
} else if (s.equalsIgnoreCase("payfee")) { // 税金を納める
L1NpcInstance npc = (L1NpcInstance) obj;
payFee(pc, npc);
htmlid = "";
} else if (s.equalsIgnoreCase("name")) { // 家の名前を決める
L1Clan clan = L1World.getInstance().getClan(pc.getClanname());
if (clan != null) {
int houseId = clan.getHouseId();
if (houseId != 0) {
L1House house = HouseTable.getInstance().getHouseTable(
houseId);
int keeperId = house.getKeeperId();
L1NpcInstance npc = (L1NpcInstance) obj;
if (npc.getNpcTemplate().get_npcId() == keeperId) {
pc.setTempID(houseId); // アジトIDを保存しておく
pc.sendPackets(new S_Message_YN(512, "")); // 家の名前は?
}
}
}
htmlid = ""; // ウィンドウを消す
} else if (s.equalsIgnoreCase("rem")) { // 家の中の家具をすべて取り除く
} else if (s.equalsIgnoreCase("tel0") // テレポートする(倉庫)
|| s.equalsIgnoreCase("tel1") // テレポートする(ペット保管所)
|| s.equalsIgnoreCase("tel2") // テレポートする(贖罪の使者)
|| s.equalsIgnoreCase("tel3")) { // テレポートする(ギラン市場)
L1Clan clan = L1World.getInstance().getClan(pc.getClanname());
if (clan != null) {
int houseId = clan.getHouseId();
if (houseId != 0) {
L1House house = HouseTable.getInstance().getHouseTable(
houseId);
int keeperId = house.getKeeperId();
L1NpcInstance npc = (L1NpcInstance) obj;
if (npc.getNpcTemplate().get_npcId() == keeperId) {
int[] loc = new int[3];
if (s.equalsIgnoreCase("tel0")) {
loc = L1HouseLocation.getHouseTeleportLoc(houseId,
0);
} else if (s.equalsIgnoreCase("tel1")) {
loc = L1HouseLocation.getHouseTeleportLoc(houseId,
1);
} else if (s.equalsIgnoreCase("tel2")) {
loc = L1HouseLocation.getHouseTeleportLoc(houseId,
2);
} else if (s.equalsIgnoreCase("tel3")) {
loc = L1HouseLocation.getHouseTeleportLoc(houseId,
3);
}
L1Teleport.teleport(pc, loc[0], loc[1], (short) loc[2],
5, true);
}
}
}
htmlid = ""; // ウィンドウを消す
} else if (s.equalsIgnoreCase("upgrade")) { // 地下アジトを作る
L1Clan clan = L1World.getInstance().getClan(pc.getClanname());
if (clan != null) {
int houseId = clan.getHouseId();
if (houseId != 0) {
L1House house = HouseTable.getInstance().getHouseTable(
houseId);
int keeperId = house.getKeeperId();
L1NpcInstance npc = (L1NpcInstance) obj;
if (npc.getNpcTemplate().get_npcId() == keeperId) {
if (pc.isCrown() && pc.getId() == clan.getLeaderId()) { // 君主、かつ、血盟主
if (house.isPurchaseBasement()) {
// 既に地下アジトを所有しています。
pc.sendPackets(new S_ServerMessage(1135));
} else {
if (pc.getInventory().consumeItem(
L1ItemId.ADENA, 5000000)) {
house.setPurchaseBasement(true);
HouseTable.getInstance().updateHouse(house); // DBに書き込み
// 地下アジトが生成されました。
pc.sendPackets(new S_ServerMessage(1099));
} else {
// \f1アデナが不足しています。
pc.sendPackets(new S_ServerMessage(189));
}
}
} else {
// この命令は血盟の君主のみが利用できます。
pc.sendPackets(new S_ServerMessage(518));
}
}
}
}
htmlid = ""; // ウィンドウを消す
} else if (s.equalsIgnoreCase("hall")
&& obj instanceof L1HousekeeperInstance) { // 地下アジトにテレポートする
L1Clan clan = L1World.getInstance().getClan(pc.getClanname());
if (clan != null) {
int houseId = clan.getHouseId();
if (houseId != 0) {
L1House house = HouseTable.getInstance().getHouseTable(
houseId);
int keeperId = house.getKeeperId();
L1NpcInstance npc = (L1NpcInstance) obj;
if (npc.getNpcTemplate().get_npcId() == keeperId) {
if (house.isPurchaseBasement()) {
int[] loc = new int[3];
loc = L1HouseLocation.getBasementLoc(houseId);
L1Teleport.teleport(pc, loc[0], loc[1],
(short) (loc[2]), 5, true);
} else {
// 地下アジトがないため、テレポートできません。
pc.sendPackets(new S_ServerMessage(1098));
}
}
}
}
htmlid = ""; // ウィンドウを消す
}
// ElfAttr:0.無属性,1.地属性,2.火属性,4.水属性,8.風属性
else if (s.equalsIgnoreCase("fire")) // エルフの属性変更「火の系列を習う」
{
if (pc.isElf()) {
if (pc.getElfAttr() != 0) {
return;
}
pc.setElfAttr(2);
pc.save(); // DBにキャラクター情報を書き込む
pc.sendPackets(new S_SkillIconGFX(15, 1)); // 体の隅々に火の精霊力が染みこんできます。
htmlid = ""; // ウィンドウを消す
}
} else if (s.equalsIgnoreCase("water")) { // エルフの属性変更「水の系列を習う」
if (pc.isElf()) {
if (pc.getElfAttr() != 0) {
return;
}
pc.setElfAttr(4);
pc.save(); // DBにキャラクター情報を書き込む
pc.sendPackets(new S_SkillIconGFX(15, 2)); // 体の隅々に水の精霊力が染みこんできます。
htmlid = ""; // ウィンドウを消す
}
} else if (s.equalsIgnoreCase("air")) { // エルフの属性変更「風の系列を習う」
if (pc.isElf()) {
if (pc.getElfAttr() != 0) {
return;
}
pc.setElfAttr(8);
pc.save(); // DBにキャラクター情報を書き込む
pc.sendPackets(new S_SkillIconGFX(15, 3)); // 体の隅々に風の精霊力が染みこんできます。
htmlid = ""; // ウィンドウを消す
}
} else if (s.equalsIgnoreCase("earth")) { // エルフの属性変更「地の系列を習う」
if (pc.isElf()) {
if (pc.getElfAttr() != 0) {
return;
}
pc.setElfAttr(1);
pc.save(); // DBにキャラクター情報を書き込む
pc.sendPackets(new S_SkillIconGFX(15, 4)); // 体の隅々に地の精霊力が染みこんできます。
htmlid = ""; // ウィンドウを消す
}
} else if (s.equalsIgnoreCase("init")) { // エルフの属性変更「精霊力を除去する」
if (pc.isElf()) {
if (pc.getElfAttr() == 0) {
return;
}
for (int cnt = 129; cnt <= 176; cnt++) // 全エルフ魔法をチェック
{
L1Skills l1skills1 = SkillsTable.getInstance().getTemplate(
cnt);
int skill_attr = l1skills1.getAttr();
if (skill_attr != 0) // 無属性魔法以外のエルフ魔法をDBから削除する
{
SkillsTable.getInstance().spellLost(pc.getId(),
l1skills1.getSkillId());
}
}
// エレメンタルプロテクションによって上昇している属性防御をリセット
if (pc.hasSkillEffect(L1SkillId.ELEMENTAL_PROTECTION)) {
pc.removeSkillEffect(L1SkillId.ELEMENTAL_PROTECTION);
}
pc.sendPackets(new S_DelSkill(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 248, 252, 252, 255, 0, 0, 0, 0, 0,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -