Exemple #1
0
        private static void HandleRegionSkills(GameSession session, PacketReader packet)
        {
            long   skillSN  = packet.ReadLong();
            byte   mode     = packet.ReadByte();
            int    unknown  = packet.ReadInt();
            int    unknown2 = packet.ReadInt();
            CoordF position = packet.Read <CoordF>();
            CoordF rotation = packet.Read <CoordF>();

            // TODO: Verify rest of skills to proc correctly.
            // Send status correctly when Region attacks are proc.
            SkillCast parentSkill = SkillUsePacket.SkillCastMap[skillSN];

            if (parentSkill.GetConditionSkill() == null)
            {
                return;
            }

            foreach (SkillCondition conditionSkill in parentSkill.GetConditionSkill())
            {
                if (!conditionSkill.Splash)
                {
                    continue;
                }

                SkillCast skillCast = new SkillCast(conditionSkill.Id, conditionSkill.Level, GuidGenerator.Long(), session.ServerTick, parentSkill);
                RegionSkillHandler.Handle(session, GuidGenerator.Int(), session.FieldPlayer.Coord, skillCast);
            }
        }