Ejemplo n.º 1
0
 internal void SendCharacterPartyChanged(WorldClient client, int characterId, PartyMemberType type)
 {
     using var packet = new Packet(PacketType.MAP_PARTY_SET);
     packet.Write(characterId);
     packet.Write((byte)type);
     client.SendPacket(packet);
 }
Ejemplo n.º 2
0
 public PartyMemberClass(string name, string nick, PartyMemberType type, PartyMember _enum, int health, float DR, float dps)
 {
     Name = name;
     NickName = nick;
     Type = type;
     MemberEnum = _enum;
     MaxHealth = health;
     BaseMaxHealth = health;
     Health = health;
     DamageReduction = DR;
     BaseDamageReduction = DR;
     DPS = dps;
     BaseDPS = dps;
 }
Ejemplo n.º 3
0
        /// <summary>
        ///  Notifies other players, that player entered/left party or got/removed leader.
        /// </summary>
        private void Character_OnPartyChanged(Character sender)
        {
            foreach (var player in GetAllPlayers(true))
            {
                PartyMemberType type = PartyMemberType.NoParty;

                if (sender.IsPartyLead)
                {
                    type = PartyMemberType.Leader;
                }
                else if (sender.HasParty)
                {
                    type = PartyMemberType.Member;
                }

                _packetsHelper.SendCharacterPartyChanged(player.Client, sender.Id, type);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        ///  Notifies other players, that player entered/left party or got/removed leader.
        /// </summary>
        private void Character_OnPartyChanged(Character sender)
        {
            foreach (var player in GetAllPlayers(true))
            {
                PartyMemberType type = PartyMemberType.NoParty;

                if (sender.PartyManager.IsPartyLead)
                {
                    type = PartyMemberType.Leader;
                }
                else if (sender.PartyManager.HasParty)
                {
                    type = PartyMemberType.Member;
                }

                Map.PacketFactory.SendCharacterPartyChanged(player.GameSession.Client, sender.Id, type);
            }
        }
Ejemplo n.º 5
0
 public static List<PartyMemberClass> GetPartyMemberTypes(PartyMemberType type)
 {
     return AllPartyMembers.FindAll(item => type == item.Type);
 }
Ejemplo n.º 6
0
        public bool AddToPartyNew(Guid newPartyMemberGuid, PartyMemberType partyMemberType, PartyMemberStatus status, PartyMemberData existingPartyMemberData, AddToPartyFlags flags)
        {
            if (newPartyMemberGuid == Guid.Empty)
            {
                Debug.LogError("Failed to add party member: Empty Guid.");
                return(false);
            }
            if (m_guidToPartyMemberDataDictionary.ContainsKey(newPartyMemberGuid))
            {
                return(false);
            }
            if (!AllTimePartyMembers.Contains(newPartyMemberGuid))
            {
                AllTimePartyMembers.Add(newPartyMemberGuid);
            }
            if (partyMemberType == PartyMemberType.Primary && IsActiveStatus(status))
            {
                if ((flags & AddToPartyFlags.AllowRedirectToBench) != 0 && GodChallengeGameData.AnyEnabledChallenge(GodChallengeGameData.ProhibitPartyMembersPredicate))
                {
                    return(false);
                }
                if (m_activePrimaryPartyMembers.Count >= 6)
                {
                    Debug.LogError("Trying to add a primary party member to the party when already at max primary party members limit!");
                    return(false);
                }
            }
            PartyMemberData partyMemberData = existingPartyMemberData;

            if (partyMemberData == null)
            {
                partyMemberData = new PartyMemberData();
            }
            GameObject objectByID = InstanceID.GetObjectByID(newPartyMemberGuid);

            if ((bool)objectByID)
            {
                PartyMember partyMember = (!(bool)objectByID) ? null : objectByID.GetComponent <PartyMember>();
                if (partyMember == null)
                {
                    partyMember = ResourceManager.AddComponent <PartyMember>(objectByID);
                }
                AIController component = objectByID.GetComponent <AIController>();
                if (component != null)
                {
                    component.AssignPartyMemberBehavior();
                }
                partyMember.PartyMemberData = partyMemberData;
            }
            if (!(bool)objectByID && partyMemberData.MemberStatus == PartyMemberStatus.NotInParty)
            {
                Debug.LogError("Trying to add party member with no game object reference! Guid: " + newPartyMemberGuid.ToString());
                return(false);
            }
            if (!(bool)objectByID && status == PartyMemberStatus.Active)
            {
                status = PartyMemberStatus.InactiveAvailable;
            }
            partyMemberData.InitializePartyMemberData(newPartyMemberGuid, partyMemberType);
            m_guidToPartyMemberDataDictionary.Add(newPartyMemberGuid, partyMemberData);
            if (existingPartyMemberData != null)
            {
                RestorePartyMemberStatus(newPartyMemberGuid, status);
            }
            else
            {
                SetPartyMemberStatus(newPartyMemberGuid, status, flags);
            }
            return(true);
        }