public static void HandleSkill(MapleClient c, PacketReader pr) { int objectId = pr.ReadInt(); MapleSummon summon = c.Account.Character.Map.GetSummon(objectId); if (summon != null && summon.Owner.Id == c.Account.Character.Id && summon.MovementType != SummonMovementType.Stationary) { int skillId = pr.ReadInt(); WzCharacterSkill skillInfo = DataBuffer.GetCharacterSkillById(skillId); if (skillInfo == null) { return; } SkillEffect effect = skillInfo.GetEffect(summon.SkillLevel); switch (skillId) { case Spearman.EVIL_EYE: if (summon.SourceSkillId != Spearman.EVIL_EYE) { return; } if (DateTime.UtcNow.Subtract(summon.LastAbilityTime).TotalMilliseconds < effect.Info[CharacterSkillStat.x] * 1000) { c.CheatTracker.AddOffence(AntiCheat.OffenceType.NoDelaySummon); return; } c.Account.Character.AddHP(effect.Info[CharacterSkillStat.hp]); summon.LastAbilityTime = DateTime.UtcNow; break; case Berserker.HEX_OF_THE_EVIL_EYE: if (summon.SourceSkillId != Spearman.EVIL_EYE) { return; } effect.ApplyBuffEffect(summon.Owner); break; default: string txt = "Unhandled summon skill: " + skillId + " from summon skill: " + summon.SourceSkillId; ServerConsole.Warning(txt); Helpers.FileLogging.Log("Unhandled Summon Skills", txt); break; } //c.SendPacket(Skill.ShowOwnSkillEffect(skillId, summon.SkillLevel)); c.Account.Character.Map.BroadcastPacket(summon.GetUseSkillPacket(skillId, (byte)7), c.Account.Character); //stance ? } }