PHP Code:
public static final void MoveMonster(LittleEndianAccessor slea, MapleClient c, MapleCharacter chr) {
if ((chr == null) || (chr.getMap() == null)) {
return;
}
int oid = slea.readInt();
MapleMonster monster = chr.getMap().getMonsterByOid(oid);
List<MapleCharacter> banishPlayers = null;
// slea.readByte();
if (monster == null) {
return;
}
if (monster.getLinkCID() > 0) {
return;
}
slea.skip(1);
short moveid = slea.readShort();
boolean useSkill = (slea.readByte() & 0xFF) > 0;
byte action = slea.readByte();
int skillId = slea.readByte() & 0xFF;
int skillLevel = slea.readByte();
short delay = slea.readShort();
int realskill = 0;
int level = 0;
if (useSkill && (monster.getId() / 1000 != 9305 || Randomizer.nextInt(4) == 0)) {
byte size = monster.getNoSkills();
boolean used = false;
if (size > 0) {
final Pair<Integer, Integer> skillToUse = monster.getSkills().get((byte) Randomizer.nextInt(size));
realskill = ((Integer) skillToUse.getLeft()).intValue();
level = ((Integer) skillToUse.getRight()).intValue();
MobSkill mobSkill = MobSkillFactory.getMobSkill(realskill == 171 || realskill == 177 ? 173 : realskill, level);
if ((mobSkill != null) && (!mobSkill.checkCurrentBuff(chr, monster))) {
long now = System.currentTimeMillis();
long ls = monster.getLastSkillUsed(realskill, level);
if ((ls == 0L) || ((now - ls > mobSkill.getCoolTime()) && (!mobSkill.onlyOnce()))) {
monster.setLastSkillUsed(realskill, level, now, mobSkill.getCoolTime());
int reqHp = (int) ((float) monster.getHp() / (float) monster.getMobMaxHp() * 100.0F);
if (reqHp <= mobSkill.getHP()) {
used = true;
banishPlayers = new LinkedList<>();
mobSkill.applyEffect(chr, monster, true, banishPlayers);
}
}
}
}
if (!used || realskill == 170) {
realskill = 0;
level = 0;
}
}
byte aa = slea.readByte();
if (aa > 0) {
for (int i = 0; i < aa; i++) {
slea.skip(4);
}
}
byte gg = slea.readByte();
if (gg > 0) {
for (int i = 0; i < gg; i++) {
slea.skip(2);
}
}
slea.skip(1);
boolean skipped = (slea.readInt() != 0) && (gg > 0);
slea.skip(8);
slea.skip(5);
slea.skip(4);
slea.skip(4);
if ((monster.getId() == 9300281) && (skipped)) {
if (slea.readByte() > 10) {
slea.skip(8);
} else {
slea.seek(slea.getPosition() - 1);
}
}
Point startPos = monster.getPosition();
List<LifeMovementFragment> res = null;
res = MovementParse.parseMovement(slea, 2);
if ((res != null) && (chr != null) && (res.size() > 0)) {
MapleMap map = chr.getMap();
if (useSkill) {
c.announce(MobPacket.moveMonsterResponse(monster.getObjectId(), moveid, monster.getMp(), monster.isControllerHasAggro(), realskill, level));
} else {
c.announce(MobPacket.moveMonsterResponse(monster.getObjectId(), moveid, monster.getMp(), monster.isControllerHasAggro()));
}
// if (slea.available() < 9 || slea.available() > 41) {
if (slea.available() != 36L) {
FileoutputUtil.log("Log_Packet_Except.rtf", "slea.available != 35 (movement parsing error)\n" + slea.toString(true));
return;
}
if (monster.isControllerHasAggro()) {
c.getSession().write(MobPacket.getMonsterSkill(monster.getObjectId()));
}
if (skillId > 0) {
c.getPlayer().getMap().broadcastMessage(MobPacket.monsterBuffSkill(monster.getObjectId(), skillId, skillLevel));
} else if (useSkill) {
c.getPlayer().getMap().broadcastMessage(MobPacket.monsterAttackSkill(monster.getObjectId()));
}
MovementParse.updatePosition(res, monster, -1);
Point endPos = monster.getTruePosition();
map.moveMonster(monster, endPos);
map.broadcastMessage(chr, MobPacket.moveMonster(useSkill, action, skillId, skillLevel, delay, monster.getObjectId(), startPos, res), endPos);
}
}
My GMS v117 Source
But MobSkill Number 170 TelePort 176 Dead Skill .. Not Working Plz help 
GMS Like v117 ...