예제 #1
0
        public static string GenerateScPacket(this Mate e)
        {
            if (e.IsTemporalMate)
            {
                return("");
            }

            double xp = e.XpLoad();

            if (xp > int.MaxValue)
            {
                xp = (int)(xp / 100);
            }

            switch (e.MateType)
            {
            case MateType.Partner:
                return
                    ($"sc_n " +
                     $"{e.PetId} " +
                     $"{e.NpcMonsterVNum} " +
                     $"{e.MateTransportId} " +
                     $"{e.Level} " +
                     $"{e.Loyalty} " +
                     $"{e.Experience} " +
                     $"{(e.WeaponInstance != null ? $"{e.WeaponInstance.ItemVNum}.{e.WeaponInstance.Rare}.{e.WeaponInstance.Upgrade}" : "-1")} " +
                     $"{(e.ArmorInstance != null ? $"{e.ArmorInstance.ItemVNum}.{e.ArmorInstance.Rare}.{e.ArmorInstance.Upgrade}" : "-1")} " +
                     $"{(e.GlovesInstance != null ? $"{e.GlovesInstance.ItemVNum}.0.0" : "-1")} " +
                     $"{(e.BootsInstance != null ? $"{e.BootsInstance.ItemVNum}.0.0" : "-1")} " +
                     $"0 0 1 " +
                     $"{e.WeaponInstance?.Upgrade ?? 0} " +
                     $"{e.DamageMinimum + (e.WeaponInstance?.Item.DamageMinimum ?? 0)} " +
                     $"{e.DamageMaximum + (e.WeaponInstance?.Item.DamageMaximum ?? 0)} " +
                     //$"{e.Concentrate + (e.WeaponInstance?.Item.HitRate ?? 0)} " +
                     $"500" +
                     $"{e.Monster.CriticalChance + (e.WeaponInstance?.Item.CriticalLuckRate ?? 0)} " +
                     $"{e.Monster.CriticalRate + (e.WeaponInstance?.Item.CriticalRate ?? 0)} " +
                     $"{e.ArmorInstance?.Upgrade ?? 0} {e.Monster.CloseDefence + e.MeleeDefense + (e.ArmorInstance?.Item.CloseDefence ?? 0) + (e.GlovesInstance?.Item.CloseDefence ?? 0) + (e.BootsInstance?.Item.CloseDefence ?? 0)} " +
                     $"{e.MeleeDefenseDodge + (e.ArmorInstance?.Item.DefenceDodge ?? 0) + (e.GlovesInstance?.Item.DefenceDodge ?? 0) + (e.BootsInstance?.Item.DefenceDodge ?? 0)} " +
                     $"{e.RangeDefense + (e.ArmorInstance?.Item.DistanceDefence ?? 0) + (e.GlovesInstance?.Item.DistanceDefence ?? 0) + (e.BootsInstance?.Item.DistanceDefence ?? 0)} " +
                     $"{e.RangeDefenseDodge + (e.ArmorInstance?.Item.DistanceDefenceDodge ?? 0) + (e.GlovesInstance?.Item.DistanceDefenceDodge ?? 0) + (e.BootsInstance?.Item.DistanceDefenceDodge ?? 0)} " +
                     $"{e.MagicalDefense + (e.ArmorInstance?.Item.MagicDefence ?? 0) + (e.GlovesInstance?.Item.MagicDefence ?? 0) + (e.BootsInstance?.Item.MagicDefence ?? 0)} " +
                     $"{(e.IsUsingSp ? e.Sp.Instance.Item.Element : 0)} " +
                     $"{e.EquipmentFireResistance + e.Monster.FireResistance + (e.GlovesInstance?.FireResistance ?? 0) + (e.GlovesInstance?.Item.FireResistance ?? 0) + (e.BootsInstance?.FireResistance ?? 0) + (e.BootsInstance?.Item.FireResistance ?? 0)} " +
                     $"{e.EquipmentWaterResistance + e.Monster.WaterResistance + (e.GlovesInstance?.WaterResistance ?? 0) + (e.GlovesInstance?.Item.WaterResistance ?? 0) + (e.BootsInstance?.WaterResistance ?? 0) + (e.BootsInstance?.Item.WaterResistance ?? 0)} " +
                     $"{e.EquipmentLightResistance + e.Monster.LightResistance + (e.GlovesInstance?.LightResistance ?? 0) + (e.GlovesInstance?.Item.LightResistance ?? 0) + (e.BootsInstance?.LightResistance ?? 0) + (e.BootsInstance?.Item.LightResistance ?? 0)} " +
                     $"{e.EquipmentDarkResistance + e.Monster.DarkResistance + (e.GlovesInstance?.DarkResistance ?? 0) + (e.GlovesInstance?.Item.DarkResistance ?? 0) + (e.BootsInstance?.DarkResistance ?? 0) + (e.BootsInstance?.Item.DarkResistance ?? 0)} " +
                     $"{e.Hp} " +
                     $"{e.MaxHp} " +
                     $"{e.Mp} " +
                     $"{e.MaxMp} " +
                     $"{(e.IsTeamMember ? "1" : "0")} " +
                     $"{xp} " +
                     $"{(e.IsUsingSp ? e.Sp.GetName() : e.Name.Replace(' ', '^'))} " +
                     $"{(e.IsUsingSp && e.Sp != null ? e.Sp.Instance.Item.Morph : e.Skin != 0 ? e.Skin : -1)} " +
                     $"{(e.IsSummonable ? 1 : 0)} " +
                     $"{(e.Sp != null ? $"{e.Sp.Instance.ItemVNum}.{e.Sp.GetXpPercent()}" : "-1")}" +
                     $"{(e.Sp != null ? e.Sp.GenerateSkills() : " -1 -1 -1")}");

            case MateType.Pet:
                return
                    ($"sc_p " +
                     $"{e.PetId} " +
                     $"{e.NpcMonsterVNum} " +
                     $"{e.MateTransportId} " +
                     $"{e.Level} " +
                     $"{e.Loyalty} " +
                     $"{e.Experience} " +
                     $"0 " +
                     $"{e.Attack} " +
                     $"{e.DamageMinimum} " +
                     $"{e.DamageMaximum} " +
                     $"{e.Concentrate} " +
                     $"{e.Monster.CriticalChance} " +
                     $"{e.Monster.CriticalRate} " +
                     $"{e.Defence} " +
                     $"{e.MeleeDefense} " +
                     $"{e.MeleeDefenseDodge} " +
                     $"{e.RangeDefense} " +
                     $"{e.RangeDefenseDodge} " +
                     $"{e.MagicalDefense} " +
                     $"{e.Monster.Element} " +
                     $"{e.Monster.FireResistance} " +
                     $"{e.Monster.WaterResistance} " +
                     $"{e.Monster.LightResistance} " +
                     $"{e.Monster.DarkResistance} " +
                     $"{e.Hp} " +
                     $"{e.MaxHp} " +
                     $"{e.Mp} " +
                     $"{e.MaxMp} " +
                     $"{(e.IsTeamMember ? "1" : "0")} " +
                     $"{xp} " +
                     $"{(e.CanPickUp ? 1 : 0)} " +
                     $"{e.Name.Replace(' ', '^')} " +
                     $"{(e.IsSummonable ? 1 : 0)}");
            }

            return("");
        }