familiarAttack 2 monster is not damege ...
fix is packet line?
I use this one (v144) try it
public static final void AttackFamiliar(LittleEndianAccessor slea, MapleClient c, MapleCharacter chr) {
if (chr.getSummonedFamiliar() == null) {
return;
}
slea.skip(6);
int skillid = slea.readInt();
SkillFactory.FamiliarEntry f = SkillFactory.getFamiliar(skillid);
if (f == null) {
return;
}
byte unk = slea.readByte();
byte size = slea.readByte();
List<Triple<Integer, Integer, List<Integer>>> attackPair = new ArrayList(size);
for (int i = 0; i < size; i++) {
int oid = slea.readInt();
int type = slea.readInt();
slea.skip(10);
byte si = slea.readByte();
List attack = new ArrayList(si);
for (int x = 0; x < si; x++) {
int damage = slea.readInt();
attack.add(Integer.valueOf(damage));
}
attackPair.add(new Triple(Integer.valueOf(oid), Integer.valueOf(type), attack));
}
chr.getMap().broadcastMessage(chr, CField.familiarAttack(chr.getId(), unk, attackPair), chr.getTruePosition());
for (Triple attack : attackPair) {
MapleMonster mons = chr.getMap().getMonsterByOid(((Integer) attack.left).intValue());
if ((mons != null) && (mons.isAlive()) && (!mons.getStats().isFriendly()) && (mons.getLinkCID() <= 0) && (((List) attack.right).size() <= f.attackCount)) {
for (Iterator i$ = ((List) attack.right).iterator(); i$.hasNext()
{
int totaldamage = (((Integer) i$.next()).intValue());
mons.damage(chr, totaldamage, true);
}
if ((f.makeChanceResult()) && (mons.isAlive())) {
for (MonsterStatus s : f.status) {
mons.applyStatus(chr, new MonsterStatusEffect(s, Integer.valueOf(f.speed), MonsterStatusEffect.genericSkill(s), null, false), false, f.time * 1000, false, null);
}
if (f.knockback) {
mons.switchController(chr, true);
}
}
}
}
chr.getSummonedFamiliar().addFatigue(chr, attackPair.size());
}