獵人的呼喚,這是一個很有趣的技能,可以召喚任何自己捕獲的怪物出來幫忙。
獵人的呼喚.rar
(1.75 KB, 下載次數: 231)
#########################################################################
public static final int JAGUAR = 111112;
public static final int JAGUAR_2 = 111113;
public static final int JAGUAR_3 = 111114;
public static final int JAGUAR_4 = 111115;
public static final int JAGUAR_5 = 111116;
public static final int JAGUAR_6 = 111117;
public static final int JAGUAR_7 = 111118;
#########################################################################
case 30001061: { //捕获
mobID = slea.readInt();
MapleMonster mob = chr.getMap().getMonsterByOid(mobID);
if (mob != null) {
boolean success = mob.getHp() <= mob.getMobMaxHp() / 2;
chr.getMap().broadcastMessage(chr, MaplePacketCreator.showBuffeffect(chr.getId(), skillid, 1, chr.getLevel(), skillLevel, (byte) (success ? 1 : 0)), chr.getTruePosition());
if (success) {
if (mob.getId() >= 9304000 && mob.getId() < 9305000) {
chr.getQuestNAdd(MapleQuest.getInstance(111112)).setCustomData(String.valueOf((mob.getId() - 9303999) * 10));
final MapleQuestStatus stats = c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(GameConstants.JAGUAR));
c.getPlayer().updateQuest(stats, true);
} else {
if (chr.getIntNoRecord(111113) == 0) {
chr.getQuestNAdd(MapleQuest.getInstance(GameConstants.JAGUAR_2)).setCustomData(String.valueOf(mob.getId()));
final MapleQuestStatus stats = c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(GameConstants.JAGUAR_2));
c.getPlayer().updateQuest(stats, true);
} else if (chr.getIntNoRecord(111114) == 0) {
chr.getQuestNAdd(MapleQuest.getInstance(GameConstants.JAGUAR_3)).setCustomData(String.valueOf(mob.getId()));
final MapleQuestStatus stats = c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(GameConstants.JAGUAR_3));
c.getPlayer().updateQuest(stats, true);
} else if (chr.getIntNoRecord(111115) == 0) {
chr.getQuestNAdd(MapleQuest.getInstance(GameConstants.JAGUAR_4)).setCustomData(String.valueOf(mob.getId()));
final MapleQuestStatus stats = c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(GameConstants.JAGUAR_4));
c.getPlayer().updateQuest(stats, true);
} else if (chr.getIntNoRecord(111116) == 0) {
chr.getQuestNAdd(MapleQuest.getInstance(GameConstants.JAGUAR_5)).setCustomData(String.valueOf(mob.getId()));
final MapleQuestStatus stats = c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(GameConstants.JAGUAR_5));
c.getPlayer().updateQuest(stats, true);
} else if (chr.getIntNoRecord(111117) == 0) {
chr.getQuestNAdd(MapleQuest.getInstance(GameConstants.JAGUAR_6)).setCustomData(String.valueOf(mob.getId()));
final MapleQuestStatus stats = c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(GameConstants.JAGUAR_6));
c.getPlayer().updateQuest(stats, true);
} else {
chr.getQuestNAdd(MapleQuest.getInstance(GameConstants.JAGUAR_7)).setCustomData(String.valueOf(chr.getIntNoRecord(GameConstants.JAGUAR_7) + 1));
chr.getQuestNAdd(MapleQuest.getInstance(GameConstants.JAGUAR + (chr.getIntNoRecord(GameConstants.JAGUAR_7) % 5))).setCustomData(String.valueOf((mob.getId())));
}
}
chr.getMap().killMonster(mob, chr, true, false, (byte) 1);
c.getSession().write(MaplePacketCreator.updateJaguar(chr));
chr.saveToDB(false, false);
} else {
chr.dropMessage(5, "怪物体力过高,捕抓失败。");
}
}
c.getSession().write(MaplePacketCreator.enableActions());
break;
}
case 30001062: { //猎人的召唤
//for (MapleMonster m : chr.getMap().getAllMonster()) {
// MonsterStatusEffect mse = m.getBuff(MonsterStatus.Dazzle);
// if (mse!= null && mse.getX().intValue() == chr.getId()) {
// chr.getMap().broadcastMessage(MobPacket.killMonster(m.getObjectId(), 1));
// chr.getMap().removeMapObject(m);
// }
//}
MapleMonster mob;
slea.readInt();
Point posi = slea.readPos();
slea.readByte();
List<Integer> checkCaughtMob = new ArrayList<>();
for (int i = 0; i < 4; i++) {
if (chr.getIntNoRecord(111113 + i) != 0) {
checkCaughtMob.add(chr.getIntNoRecord(111113 + i));
}
}
int dd = chr.getIntNoRecord(111113 + Randomizer.nextInt(checkCaughtMob.size()));
mob = MapleLifeFactory.getMonster(dd);
mob.setPosition(posi);
mob.setStance(2);
mob.getStats().setExp(0);
mob.setStat(new MonsterStatusEffect(MonsterStatus.心灵控制, chr.getId(), 30001062, null, false), 40000); //官方默认20秒
chr.getMap().spawnMonsterOnGroundBelow(mob, posi);
c.getSession().write(MaplePacketCreator.enableActions());
break;
}
心灵控制(0x10000000, 1),
#########################################################################
public void setStat(final MonsterStatusEffect status, long duration) {
final MonsterStatus stat = status.getStati();
status.setCancelTask(duration);
stati.put(stat, status);
}
#########################################################################
/*
更新捕获的怪物
*/
public static void addJaguarInfo(MaplePacketLittleEndianWriter mplew, MapleCharacter chr) {
mplew.write(chr.getIntNoRecord(111112));
mplew.writeInt(chr.getIntNoRecord(111113)); //可以捕获的5个怪物的ID
mplew.writeInt(chr.getIntNoRecord(111114));
mplew.writeInt(chr.getIntNoRecord(111115));
mplew.writeInt(chr.getIntNoRecord(111116));
mplew.writeInt(chr.getIntNoRecord(111117));
}
#########################################################################
/*
邪魔斯类型怪物受到伤害设定
*/
public static void HypnotizeDmg(LittleEndianAccessor slea, MapleCharacter chr) {
MapleMonster mob_from = chr.getMap().getMonsterByOid(slea.readInt());
slea.skip(4);
int to = slea.readInt();
slea.skip(1);
slea.skip(1);
int damage = slea.readInt();
MapleMonster mob_to = chr.getMap().getMonsterByOid(to);
if (mob_from != null && mob_to != null/* && mob_to.getStats().isFriendly()*/) {//猎人的召唤怪物伤害
if (damage > 30000) {
return;
}
mob_to.damage(chr, damage, true);
checkShammos(chr, mob_to, chr.getMap());
}
}
|