Esempio n. 1
0
        protected override bool IsMonsterEnemy(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 not summoner so it is enemy
                    if (targetEntity.HasSummoner)
                    {
                        // If summoned by someone, will have same enemies with summoner
                        return(monsterCharacter.IsEnemy(targetEntity.Summoner));
                    }
                    else
                    {
                        // Monster always be player's enemy
                        return(true);
                    }
                }

                return(false);
            }

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

            // Attack only player by default
            return(targetEntity.Type == EntityTypes.Player);
        }