Beispiel #1
0
        public static MarryResult MarryInit(GameClient client, int spouseID)
        {
            MarryResult result;

            if (!client.ClientData.IsMainOccupation)
            {
                result = MarryResult.Error_Denied_For_Minor_Occupation;
            }
            else if (!GlobalNew.IsGongNengOpened(client, GongNengIDs.Marriage, true) || !MarryLogic.IsVersionSystemOpenOfMarriage())
            {
                result = MarryResult.NotOpen;
            }
            else if (client.ClientData.MyMarriageData.byMarrytype > 0)
            {
                result = MarryResult.SelfMarried;
            }
            else if (client.ClientData.ChangeLifeCount < 3)
            {
                result = MarryResult.SelfLevelNotEnough;
            }
            else if (client.ClientData.ExchangeID > 0 || client.ClientSocket.IsKuaFuLogin || client.ClientData.CopyMapID > 0)
            {
                result = MarryResult.SelfBusy;
            }
            else
            {
                GameClient spouseClient = GameManager.ClientMgr.FindClient(spouseID);
                if (spouseClient == null)
                {
                    result = MarryResult.TargetOffline;
                }
                else if (!spouseClient.ClientData.IsMainOccupation)
                {
                    result = MarryResult.Error_Denied_For_Minor_Occupation;
                }
                else if (!GlobalNew.IsGongNengOpened(spouseClient, GongNengIDs.Marriage, false))
                {
                    result = MarryResult.TargetNotOpen;
                }
                else
                {
                    if (!MarryLogic.SameSexMarry(false))
                    {
                        if (client.ClientData.RoleSex == spouseClient.ClientData.RoleSex)
                        {
                            return(MarryResult.InvalidSex);
                        }
                    }
                    if (spouseClient.ClientData.MyMarriageData.byMarrytype > 0)
                    {
                        result = MarryResult.TargetMarried;
                    }
                    else if (spouseClient.ClientData.ChangeLifeCount < 3)
                    {
                        result = MarryResult.TargetLevelNotEnough;
                    }
                    else if (spouseClient.ClientData.ExchangeID > 0 || spouseClient.ClientSocket.IsKuaFuLogin || spouseClient.ClientData.CopyMapID > 0)
                    {
                        result = MarryResult.TargetBusy;
                    }
                    else if (MarryLogic.ApplyExist(spouseID))
                    {
                        result = MarryResult.TargetBusy;
                    }
                    else if (spouseClient.ClientData.MyMarriageData.byAutoReject == 1)
                    {
                        result = MarryResult.AutoReject;
                    }
                    else if (MarryLogic.AddMarryApply(client.ClientData.RoleID, MarryApplyType.ApplyInit, spouseID) == null)
                    {
                        result = MarryResult.ApplyCD;
                    }
                    else if (!GameManager.ClientMgr.SubUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, MarryLogic.MarryCost, "结婚", false, true, false, DaiBiSySType.None))
                    {
                        MarryLogic.RemoveMarryApply(client.ClientData.RoleID, MarryApplyType.ApplyNull);
                        result = MarryResult.MoneyNotEnough;
                    }
                    else
                    {
                        string notifyData = string.Format("{0}:{1}:{2}", 0, client.ClientData.RoleID, client.ClientData.RoleName);
                        spouseClient.sendCmd(894, notifyData, false);
                        result = MarryResult.Success;
                    }
                }
            }
            return(result);
        }