⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 l1guardinstance.java

📁 网络游戏天堂1的java源代码。。。。。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				for (L1Clan clan : L1World.getInstance().getAllClans()) {
					if (clan.getCastleId() // 城主クラン
					== L1CastleLocation.WW_CASTLE_ID) {
						clan_name = clan.getClanName();
						pri_name = clan.getLeaderName();
						break;
					}
				}
				htmlid = "wdguard6";
				htmldata = new String[] { getName(), clan_name, pri_name };
			} else if (npcid == 60524 || // ギラン街入り口近衛兵(弓)
					npcid == 60525 || // ギラン街入り口近衛兵
					npcid == 60529) { // ギラン城近衛兵
				for (L1Clan clan : L1World.getInstance().getAllClans()) {
					if (clan.getCastleId() // 城主クラン
					== L1CastleLocation.GIRAN_CASTLE_ID) {
						clan_name = clan.getClanName();
						pri_name = clan.getLeaderName();
						break;
					}
				}
				htmlid = "grguard6";
				htmldata = new String[] { getName(), clan_name, pri_name };
			} else if (npcid == 70857) { // ハイネ城ハイネ ガード
				for (L1Clan clan : L1World.getInstance().getAllClans()) {
					if (clan.getCastleId() // 城主クラン
					== L1CastleLocation.HEINE_CASTLE_ID) {
						clan_name = clan.getClanName();
						pri_name = clan.getLeaderName();
						break;
					}
				}
				htmlid = "heguard6";
				htmldata = new String[] { getName(), clan_name, pri_name };
			} else if (npcid == 60530 || // ドワーフ城ドワーフ ガード
					npcid == 60531) {
				for (L1Clan clan : L1World.getInstance().getAllClans()) {
					if (clan.getCastleId() // 城主クラン
					== L1CastleLocation.DOWA_CASTLE_ID) {
						clan_name = clan.getClanName();
						pri_name = clan.getLeaderName();
						break;
					}
				}
				htmlid = "dcguard6";
				htmldata = new String[] { getName(), clan_name, pri_name };
			} else if (npcid == 60533 || // アデン城 ガード
					npcid == 60534) {
				for (L1Clan clan : L1World.getInstance().getAllClans()) {
					if (clan.getCastleId() // 城主クラン
					== L1CastleLocation.ADEN_CASTLE_ID) {
						clan_name = clan.getClanName();
						pri_name = clan.getLeaderName();
						break;
					}
				}
				htmlid = "adguard6";
				htmldata = new String[] { getName(), clan_name, pri_name };
			} else if (npcid == 81156) { // アデン偵察兵(ディアド要塞)
				for (L1Clan clan : L1World.getInstance().getAllClans()) {
					if (clan.getCastleId() // 城主クラン
					== L1CastleLocation.DIAD_CASTLE_ID) {
						clan_name = clan.getClanName();
						pri_name = clan.getLeaderName();
						break;
					}
				}
				htmlid = "ktguard6";
				htmldata = new String[] { getName(), clan_name, pri_name };
			}

			// html表示パケット送信
			if (htmlid != null) { // htmlidが指定されている場合
				if (htmldata != null) { // html指定がある場合は表示
					player.sendPackets(new S_NPCTalkReturn(objid, htmlid,
							htmldata));
				} else {
					player.sendPackets(new S_NPCTalkReturn(objid, htmlid));
				}
			} else {
				if (player.getLawful() < -1000) { // プレイヤーがカオティック
					player.sendPackets(new S_NPCTalkReturn(talking, objid, 2));
				} else {
					player.sendPackets(new S_NPCTalkReturn(talking, objid, 1));
				}
			}
		}
	}

	public void onFinalAction() {

	}

	public void doFinalAction() {

	}
	
	//TODO 警衛可以殺死 & 幫打  by 阿傑
	public void ReceiveManaDamage(L1Character attacker, int mpDamage)
	{
		if (mpDamage > 0 && !isDead()) {

			setHate(attacker, mpDamage);
			onNpcAI();

			if (attacker instanceof L1PcInstance) {
				serchLink((L1PcInstance) attacker, getNpcTemplate().get_family());
			}

			int newMp = getCurrentMp() - mpDamage;
			if (newMp < 0) {
				newMp = 0;
			}
			setCurrentMp(newMp);
		}
	}
	//警衛可以殺死 & 幫打  end
	
	@Override
	public void receiveDamage(L1Character attacker, int damage) // 攻擊でHPを減らすときはここを使用
	{
		//TODO 警衛可以殺死 & 幫打  by 阿傑
		if (getCurrentHp() > 0 && !isDead()) {
		//警衛可以殺死 & 幫打  end
		if (damage >= 0) {
			// int Hate = damage / 10 + 10; // ダメージの10分の1+ヒットヘイト10
			// setHate(attacker, Hate);
			setHate(attacker, damage);
			removeSkillEffect(L1SkillId.FOG_OF_SLEEPING);
		}

		onNpcAI();
		//TODO 警衛可以殺死 & 幫打  by 阿傑
		if (attacker instanceof L1PcInstance) {
			serchLink((L1PcInstance) attacker, getNpcTemplate().get_family());
		}
		//警衛可以殺死 & 幫打  end
		if (attacker instanceof L1PcInstance && damage > 0) {
			L1PcInstance player = (L1PcInstance) attacker;
			player.setPetTarget(this);
		}
		//TODO 警衛可以殺死 & 幫打  by 阿傑
		int newHp = getCurrentHp() - damage;
		if (newHp <= 0 && !isDead()) {
			setCurrentHpDirect(0);
			setDead(true);
			_lastattacker = attacker;
			Death death = new Death();
			GeneralThreadPool.getInstance().execute(death);
			// Death(attacker);
		}
		if (newHp > 0)
			setCurrentHp(newHp);
		} else if (!isDead()) {
			setDead(true);
			l1j.eric.gui.J_Main.getInstance().addConsolPost("警告:NPC的HP減少處理發生異常,視為最初HP0處理。");
			_lastattacker = attacker;
			Death death = new Death();
			GeneralThreadPool.getInstance().execute(death);
			// Death(attacker);
		}
		//警衛可以殺死 & 幫打  end
	}
	
	//TODO 警衛可以殺死 & 幫打  by 阿傑
	@Override
	public void setCurrentHp(int i) {
		int currentHp = i;
		if (currentHp >= getMaxHp()) {
			currentHp = getMaxHp();
		}
		setCurrentHpDirect(currentHp);

		if (getMaxHp() > getCurrentHp()) {
			startHpRegeneration();
		}
	}
	//警衛可以殺死 & 幫打  end

	//TODO 警衛可以殺死 & 幫打  by 阿傑
	@Override
	public void setCurrentMp(int i) {
		int currentMp = i;
		if (currentMp >= getMaxMp()) {
			currentMp = getMaxMp();
		}
		setCurrentMpDirect(currentMp);
		if (getMaxMp() > getCurrentMp()) {
			startMpRegeneration();
		}
	}
	//警衛可以殺死 & 幫打  end
	
	//TODO 警衛可以殺死 & 幫打  by 阿傑
	private L1Character _lastattacker;

	class Death implements Runnable {
		L1Character lastAttacker = _lastattacker;
		L1Object object = L1World.getInstance().findObject(getId());
		L1GuardInstance npc = (L1GuardInstance) object;

		@Override
		public void run() {
			setDeathProcessing(true);
			setCurrentHpDirect(0);
			setDead(true);
			int targetobjid = getId();
			npc.getMap().setPassable(npc.getLocation(), true);

			broadcastPacket(new S_AttackPacket(lastAttacker,targetobjid, 8));

			L1PcInstance player = null;
			if (lastAttacker instanceof L1PcInstance)
				player = (L1PcInstance) lastAttacker;
			else if (lastAttacker instanceof L1PetInstance)
				player = (L1PcInstance) ((L1PetInstance) lastAttacker)
						.getMaster();
			else if (lastAttacker instanceof L1SummonInstance)
				player = (L1PcInstance) ((L1SummonInstance) lastAttacker)
						.getMaster();
						
			if (player != null) {
				ArrayList<L1Character> targetList = _hateList.toTargetArrayList();
				ArrayList<Integer> hateList = _hateList.toHateArrayList();
				int exp = getExp();
				CalcExp.calcExp(player, targetobjid, targetList, hateList, exp);

				try {
					DropTable.getInstance().dropShare(npc, targetList,
							hateList);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
			setDeathProcessing(false);

			setExp(0);
			allTargetClear();
			DeleteNpc delete_timer = new DeleteNpc();
			GeneralThreadPool.getInstance().execute(delete_timer);
		}
	}
	
	class DeleteNpc implements Runnable {
		public void run() {
			try {
				Thread.sleep(10000);
			} catch (Exception e) {
				e.printStackTrace();
			}
			if (!isDead() || _destroyed)
				return;
			deleteMe();
		}
	}
	
	public void setLink(L1Character cha) {
		if (cha != null && _hateList.isEmpty()) {
			_hateList.add(cha, 0);
			checkTarget();
		}
	}
	//警衛可以殺死 & 幫打  end

	private boolean checkHasCastle(L1PcInstance pc, int castleId) {
		boolean isExistDefenseClan = false;
		for (L1Clan clan : L1World.getInstance().getAllClans()) {
			if (castleId == clan.getCastleId()) {
				isExistDefenseClan = true;
				break;
			}
		}
		if (!isExistDefenseClan) { // 城主クランが居ない
			return true;
		}

		if (pc.getClanid() != 0) { // クラン所属中
			L1Clan clan = L1World.getInstance().getClan(pc.getClanname());
			if (clan != null) {
				if (clan.getCastleId() == castleId) {
					return true;
				}
			}
		}
		return false;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -