//
// ScNPacket.cs
//
// Copyright (c) František Boháček. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using NosSmooth.Packets.Enums;
using NosSmooth.Packets.Server.Character;
using NosSmooth.Packets.Server.Maps;
using NosSmooth.PacketSerializer.Abstractions;
using NosSmooth.PacketSerializer.Abstractions.Attributes;
using NosSmooth.PacketSerializer.Abstractions.Common;
namespace NosSmooth.Packets.Server.Mates;
///
/// Information about a partner the
/// character owns.
///
/// The id of the partner entity.
/// The vnum of the partner.
/// Unknown TODO.
/// The level of the partner.
/// The loyalty of the partner.
/// The experience of the partner.
/// Information about partner's weapon.
/// Information about partner's armor.
/// Information about partner's gauntlet.
/// Information about partner's boots.
/// Unknown TODO.
/// Unknown TODO.
/// Unknown TODO.
/// The upgrade of attack.
/// The minimum attack amount.
/// The maximum attack amount.
/// Unknown TODO.
/// The critical chance of the partner's hit.
/// The critical rate of the partner's hit.
/// The partner's defence upgrade.
/// The melee defence.
/// The dodge of melee defence.
/// The ranged defence.
/// The dodge of ranged defence.
/// The magical defence.
/// The element of the partner.
/// Information about partner's resistance
/// The current hp of the partner.
/// The maximum hp of the partner.
/// The current mp of the partner.
/// The maximum mp of the partner.
/// Unknown TODO.
/// The maximum experience in current level of the partner.
/// The name of the partner.
/// The morph vnum of the partner, if any.
/// Whether the partner is summonable.
/// The currently equipped sp of the partner.
/// Information about first skill of the partner's sp.
/// Information about second skill of the partner's sp.
/// Information about third skill of the partner's sp.
[PacketHeader("sc_n", PacketSource.Server)]
[GenerateSerializer(true)]
public record ScNPacket
(
[PacketIndex(0)]
long PartnerId,
[PacketIndex(1)]
long NpcVNum,
[PacketIndex(2)]
long TransportId,
[PacketIndex(3)]
short Level,
[PacketIndex(4)]
short Loyalty,
[PacketIndex(5)]
long Experience,
[PacketIndex(6, InnerSeparator = '.')]
NullableWrapper WeaponSubPacket,
[PacketIndex(7, InnerSeparator = '.')]
NullableWrapper ArmorSubPacket,
[PacketIndex(8, InnerSeparator = '.')]
NullableWrapper GauntletSubPacket,
[PacketIndex(9, InnerSeparator = '.')]
NullableWrapper BootsSubPacket,
[PacketIndex(10, InnerSeparator = '.')]
short Unknown1,
[PacketIndex(11)]
short Unknown2,
[PacketIndex(12)]
short AttackType,
[PacketIndex(13)]
short AttackUpgrade,
[PacketIndex(14)]
int MinimumAttack,
[PacketIndex(15)]
int MaximumAttack,
[PacketIndex(16)]
int Precision,
[PacketIndex(17)]
int CriticalChance,
[PacketIndex(18)]
int CriticalRate,
[PacketIndex(19)]
short DefenceUpgrade,
[PacketIndex(20)]
int MeleeDefence,
[PacketIndex(21)]
int MeleeDefenceDodge,
[PacketIndex(22)]
int RangeDefence,
[PacketIndex(23)]
int RangeDodgeRate,
[PacketIndex(24)]
int MagicalDefence,
[PacketIndex(25)]
Element Element,
[PacketIndex(26, InnerSeparator = ' ')]
ResistanceSubPacket ResistanceSubPacket,
[PacketIndex(27)]
int Hp,
[PacketIndex(28)]
int HpMax,
[PacketIndex(29)]
int Mp,
[PacketIndex(30)]
int MpMax,
[PacketIndex(31)]
bool IsTeamMember,
[PacketIndex(32)]
int LevelExperience,
[PacketIndex(33)]
NameString Name,
[PacketIndex(34)]
int? MorphVNum,
[PacketIndex(35)]
bool IsSummonable,
[PacketIndex(36, InnerSeparator = '.')]
NullableWrapper SpSubPacket,
[PacketIndex(37, InnerSeparator = '.')]
NullableWrapper Skill1SubPacket,
[PacketIndex(38, InnerSeparator = '.')]
NullableWrapper Skill2SubPacket,
[PacketIndex(39, InnerSeparator = '.')]
NullableWrapper Skill3SubPacket
) : IPacket;