📄 l1guardinstance.java
字号:
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 + -