사이트 로그인
2016.06.29 11:17
대부분 팩은 다되있을텐데요
드랍 딜레이라든가 타이머2개돌려야해서
제방식대로 고쳐봤음..
L1MonsterInstance.java
/** 제브 레퀴 관련 (개태) **/
if (npcid == 4036016 || npcid == 4036017) {
if (checkAlivePartner(this)) {
setCurrentHp(0);
setDead(true);
setActionStatus(ActionCodes.ACTION_Die);
broadcastPacket(new S_DoActionGFX(getId(), ActionCodes.ACTION_Die));
ResurrectTimer res = new ResurrectTimer(this);
res.begin();
return;
}
killPartner(attacker, this);
}
/** **/
int transformId = getNpcTemplate().getTransformId(); //검색후 위에 추가
if (transformId == -1) {
/** 제브 레퀴 관련 (개태) **/
private boolean isDead_Partner = false;
private boolean checkAlivePartner(L1MonsterInstance mob) {
int npc_id = mob.getNpcId();
int parter_id = 0;
switch (npc_id) {
case 4036016:
parter_id = 4036017;
break;
case 4036017:
parter_id = 4036016;
break;
}
if (parter_id == 0) return false;
for (L1Object obj : L1World.getInstance().getVisibleObjects(mob.getMapId()).values()) {
if (obj instanceof L1MonsterInstance) {
L1MonsterInstance partner = (L1MonsterInstance) obj;
if (partner.getNpcId() == parter_id) {
if (!partner.isDead()) {
return true;
}
}
}
}
return false;
}
private void killPartner(L1Character attacker, L1MonsterInstance mob) {
int npc_id = mob.getNpcId();
int parter_id = 0;
switch (npc_id) {
case 4036016:
parter_id = 4036017;
break;
case 4036017:
parter_id = 4036016;
break;
}
if (parter_id == 0) return;
L1MonsterInstance partner = null;
for (L1Object obj : L1World.getInstance().getVisibleObjects(mob.getMapId()).values()) {
if (obj instanceof L1MonsterInstance) {
if (((L1MonsterInstance) obj).getNpcId() == parter_id) {
partner = (L1MonsterInstance) obj;
partner.isDead_Partner = true;
break;
}
}
}
if (partner != null) {
Dead dead = partner.dead;
dead.setAttacker(attacker);
GeneralThreadPool.getInstance().execute(dead);
}
}
class ResurrectTimer extends TimerTask {
private L1NpcInstance npc;
public ResurrectTimer(L1NpcInstance npc) {
this.npc = npc;
}
@Override
public void run() {
if (npc != null) {
if (!isDead_Partner) {
//이펙트는 본인선택..
npc.resurrect(npc.getMaxHp() / 2);
}
}
}
public void begin() {
GeneralThreadPool.getInstance().schedule(this, 1000 * 60);
}
}
/** **/
=============================================================================================================
이것만 넣고
기존에 제브레퀴 관련 되잇던건 전부 삭제하시면 됩니당.
기존 소스가 문제있는건 아니고 좀이상해서 바꾼거임..쓰실분만 고치삼
그리고 혹시
distributeExpDropKarma
여기 메서드에서 lastAttacker를 헤이트리스트에서 뽑아오게 되어있으시다면
아이템 드랍이 안되니 그부분도 팩에맞게 고쳐주세영
[출처] 제브레퀴 라이브화 (비공개 카페)