public virtual ActionResult SendCovenantWideMessage(string Message)
        {
            if (Message.Length > 1000)
            {
                TempData["Error"] = "Your message is too long.  There is a 1000 character limit.";
                return(RedirectToAction(MVC.Covenant.MyCovenant()));
            }
            var me = PlayerProcedures.GetPlayerFromMembership(User.Identity.GetUserId());

            // assert that player is in a covenant
            if (me.Covenant == null || me.Covenant <= 0)
            {
                TempData["Error"] = "You are not in a covenant and cannot send out mass messages to your members.";
                return(RedirectToAction(MVC.Covenant.MyCovenant()));
            }

            // assert that the player is a covenant leader
            var myCov = CovenantProcedures.GetDbCovenant((int)me.Covenant);

            if (myCov.LeaderId != me.Id)
            {
                TempData["Error"]    = "You are not the leader of your covenant.";
                TempData["SubError"] = "Only covenant leaders can send out mass messages.";
                return(RedirectToAction(MVC.Covenant.MyCovenant()));
            }

            MessageProcedures.SendCovenantWideMessage(me, Message);

            TempData["Result"] = "Message sent out!";
            return(RedirectToAction(MVC.Covenant.MyCovenant()));
        }
Esempio n. 2
0
        public static MvcHtmlString GetCovenantInfoShort(Player player)
        {
            if (player.Covenant == null)
            {
                return(new MvcHtmlString(""));
            }
            if (!CovenantDictionary.IdNameFlagLookup.Any())
            {
                CovenantProcedures.LoadCovenantDictionary();
            }

            var temp   = CovenantDictionary.IdNameFlagLookup.FirstOrDefault(c => c.Key == player.Covenant).Value;
            var output = "<span class='covRptName'><b>" + temp.Name + "</b></span>";

            return(new MvcHtmlString(output));
        }
Esempio n. 3
0
        public static string RandomShout(Player player, Random rand = null)
        {
            rand = rand ?? new Random();

            string[] memes =
            {
                // More memes here
            };
            string meme = null;

            var specialCases = 2;

            var selection = rand.Next(memes.Count() + specialCases);

            if (selection == 0)
            {
                var covens = CovenantProcedures.GetCovenantsList();

                if (player.Covenant.HasValue)
                {
                    covens = covens.Where(c => c.dbCovenant.Id == player.Covenant.Value);
                }

                if (covens.Any())
                {
                    var coven = covens.ElementAt(rand.Next(covens.Count()));
                    meme = $"All hail {coven.Leader.GetFullName()}, leader of {coven.dbCovenant.Name}!";
                }
            }
            else if (selection == 1)
            {
                meme = $"I'm {(rand.Next(2) == 0 ? "" : "not ")}{(rand.Next(2) == 0 ? "cute" : "cyoot")}!!!";
            }
            else
            {
                meme = memes[selection - specialCases];
            }

            if (meme == null)
            {
                return(null);
            }

            LocationLogProcedures.AddLocationLog(player.dbLocationName, $"{player.GetFullName()} shouted <b>\"{meme}\"</b> here.");

            return($"You shouted \"{meme}\"");
        }
        public virtual ActionResult CovenantWideMessage()
        {
            var me = PlayerProcedures.GetPlayerFromMembership(User.Identity.GetUserId());

            // assert that player is in a covenant
            if (me.Covenant == null || me.Covenant <= 0)
            {
                TempData["Error"] = "You are not in a covenant and cannot send out mass messages to your members.";
                return(RedirectToAction(MVC.Covenant.MyCovenant()));
            }

            // assert that the player is a covenant leader
            var myCov = CovenantProcedures.GetDbCovenant((int)me.Covenant);

            if (myCov.LeaderId != me.Id)
            {
                TempData["Error"]    = "You are not the leader of your covenant.";
                TempData["SubError"] = "Only covenant leaders can send out mass messages.";
                return(RedirectToAction(MVC.Covenant.MyCovenant()));
            }

            return(View(MVC.Messages.Views.CovenantWideMessage));
        }
        public static void DeleteAccount(string membershipId, int playerId)
        {
            DomainRegistry.Repository.Execute(new DeleteAllMessagesOwnedByPlayer {
                OwnerId = playerId
            });

            var me = PlayerProcedures.GetPlayerFromMembership(membershipId);

            if (me.Covenant > 0)
            {
                CovenantProcedures.RemovePlayerFromCovenant(me);
            }

            // Move soulbound items (including with Karin) to merchants and break the soulbind
            DomainRegistry.Repository.Execute(new RemoveSoulbindingOnPlayerItems {
                PlayerId = me.Id
            });

            // Move remaining non-soulbound items off player
            DomainRegistry.Repository.Execute(new RemoveAllItemsFromPlayer {
                PlayerId = me.Id
            });

            // Husk of player should consent to soulbinding like an NPC would
            if (me.Mobility == PvPStatics.MobilityInanimate || me.Mobility == PvPStatics.MobilityPet)
            {
                DomainRegistry.Repository.Execute(new SetSoulbindingConsent {
                    IsConsenting = true, PlayerId = me.Id
                });
            }

            using (var context = new StatsContext())
            {
                context.Database.ExecuteSqlCommand(TransactionalBehavior.EnsureTransaction,
                                                   @"DELETE FROM [dbo].[ContributorCustomForms] WHERE OwnerMembershipId = @membershipId;
                    DELETE FROM [dbo].[Donators] WHERE OwnerMembershipId = @membershipId;
                    DELETE FROM [dbo].[Friends] WHERE OwnerMembershipId = @membershipId OR FriendMembershipId = @membershipId;
                    DELETE FROM [dbo].[PlayerBios] WHERE OwnerMembershipId = @membershipId;
                    DELETE FROM [dbo].[PollEntries] WHERE OwnerMembershipId = @membershipId;
                    DELETE FROM [dbo].[RPClassifiedAds] WHERE OwnerMembershipId = @membershipId;
                    DELETE FROM [dbo].[Strikes] WHERE UserMembershipId = @membershipId OR FromModerator = @membershipId;
                    DELETE FROM [dbo].[Reports] WHERE Reporter = @membershipId OR Reported = @membershipId;
                    DELETE FROM [dbo].[Achievements] WHERE OwnerMembershipId = @membershipId;
                    DELETE FROM [dbo].[AchievementBadges] WHERE OwnerMembershipId = @membershipId;
                    DELETE FROM [dbo].[AspNetUserRoles] WHERE UserId = @membershipId;
                    DELETE FROM [dbo].[AuthorArtistBios] WHERE OwnerMembershipId = @membershipId;
                    DELETE FROM [dbo].[CaptchaEntries] WHERE User_Id = @membershipId;
                    DELETE FROM [dbo].[BlacklistEntries] WHERE CreatorMembershipId = @membershipId OR TargetMembershipId = @membershipId;
                    DELETE FROM [dbo].[ReservedNames] WHERE MembershipId = @membershipId;
                    
                    UPDATE [dbo].[Contributions] SET OwnerMembershipId = NULL WHERE OwnerMembershipId = @membershipId;
                    UPDATE [dbo].[EffectContributions] SET OwnerMemberhipId = NULL WHERE OwnerMemberhipId = @membershipId;
                    UPDATE [dbo].[DMRolls] SET MembershipOwnerId = NULL WHERE MembershipOwnerId = @membershipId;
                    UPDATE [dbo].[Players] SET BotId = -1, IpAddress = CONCAT(IpAddress, '-deleted') WHERE MembershipId = @membershipId;
                    UPDATE [dbo].[Items] SET IsPermanent = 'True' WHERE FormerPlayerId = @playerId;
                    
                    UPDATE [dbo].[Players] SET MembershipId = NULL WHERE MembershipId = @membershipId;
                    
                    DELETE FROM [dbo].[AspNetUsers] WHERE Id = @membershipId;",
                                                   new SqlParameter("@membershipId", membershipId),
                                                   new SqlParameter("@playerId", playerId));
            }
        }
Esempio n. 6
0
        private bool UserCanSeeRoom(ref string roomName)
        {
            if (roomName.StartsWith("coven_"))
            {
                var userId = User.Identity.GetUserId();
                var me     = PlayerProcedures.GetPlayerFromMembership(userId);

                if (User.IsInRole(PvPStatics.Permissions_Moderator) || User.IsInRole(PvPStatics.Permissions_Admin))
                {
                    // Always grant access for moderators
                    if (me.Covenant == null || me.Covenant <= 0 || roomName != $"coven_{me.Covenant}")
                    {
                        // User is not a member of this coven
                        TempData["Result"] = "You are in this covenant chat room for moderation purposes.";
                    }
                }
                else if (me.Covenant == null || me.Covenant <= 0)
                {
                    TempData["Error"] = "You are not in a covenant and cannot access this covenant chat room.";
                    return(false);
                }
                else if (roomName != $"coven_{me.Covenant}")
                {
                    TempData["Error"] = "You are not in this covenant and cannot access its chat room.";
                    return(false);
                }

                // Player is in coven or a moderator
                var covenId = roomName.Substring(6).Parse <int>();
                var coven   = CovenantProcedures.GetDbCovenant(covenId);
                if (coven != null)
                {
                    roomName = $"{coven.Name} (covenant)";
                }
            }
            else if (roomName.StartsWith("owner_"))
            {
                var userId = User.Identity.GetUserId();
                var me     = PlayerProcedures.GetPlayerFromMembership(userId);

                if (roomName != $"owner_{me.Id}")
                {
                    // Not the owner
                    var item = DomainRegistry.Repository.FindSingle(new GetItemByFormerPlayer {
                        PlayerId = me.Id
                    });

                    if (item == null || item.Owner == null || roomName != $"owner_{item.Owner.Id}")
                    {
                        // Not owned by the player
                        if (User.IsInRole(PvPStatics.Permissions_Moderator) || User.IsInRole(PvPStatics.Permissions_Admin))
                        {
                            TempData["Result"] = "You are in this owner chat room for moderation purposes.";
                        }
                        else
                        {
                            TempData["Error"] = "You do not have access to this owner chat room.";
                            return(false);
                        }
                    }
                }

                var ownerId = roomName.Substring(6).Parse <int>();
                var owner   = PlayerProcedures.GetPlayerFormViewModel(ownerId);
                if (owner != null && owner.Player != null)
                {
                    roomName = $"{owner.Player.GetFullName()} (owner chat)";
                }
            }

            return(true);
        }