Esempio n. 1
0
        protected override bool IsMonsterAlly(BaseMonsterCharacterEntity monsterCharacter, EntityInfo targetEntity)
        {
            if (string.IsNullOrEmpty(targetEntity.Id))
            {
                return(false);
            }

            if (monsterCharacter is GuildWarMonsterCharacterEntity)
            {
                if (targetEntity.Type == EntityTypes.Player)
                {
                    return(BaseGameNetworkManager.Singleton.DefenderGuildId != 0 && BaseGameNetworkManager.Singleton.DefenderGuildId == targetEntity.GuildId);
                }

                if (targetEntity.Type == EntityTypes.Monster)
                {
                    // If this character is summoner so it is ally
                    if (targetEntity.HasSummoner)
                    {
                        // If summoned by someone, will have same allies with summoner
                        return(monsterCharacter.IsAlly(targetEntity.Summoner));
                    }
                    else
                    {
                        // Monster always not player's ally
                        return(false);
                    }
                }

                return(true);
            }

            if (monsterCharacter.IsSummoned)
            {
                // If summoned by someone, will have same allies with summoner
                return(targetEntity.Id.Equals(monsterCharacter.Summoner.Id) || monsterCharacter.Summoner.IsAlly(targetEntity));
            }

            if (targetEntity.Type == EntityTypes.GuildWarMonster)
            {
                // Monsters won't attack castle heart
                return(true);
            }

            if (targetEntity.Type == EntityTypes.Monster)
            {
                // If another monster has same allyId so it is ally
                if (targetEntity.HasSummoner)
                {
                    return(monsterCharacter.IsAlly(targetEntity.Summoner));
                }
                return(GameInstance.MonsterCharacters[targetEntity.DataId].AllyId == monsterCharacter.CharacterDatabase.AllyId);
            }

            return(false);
        }