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); }