Пример #1
0
        public void Initialize()
        {
            TUserCastle Castle;

            if (m_CastleList.Count <= 0)
            {
                Castle = new TUserCastle(M2Share.g_Config.sCastleDir);
                m_CastleList.Add(Castle);
                Castle.Initialize();
                Castle.m_sConfigDir = "0";
                Castle.m_EnvirList.Add("0151");
                Castle.m_EnvirList.Add("0152");
                Castle.m_EnvirList.Add("0153");
                Castle.m_EnvirList.Add("0154");
                Castle.m_EnvirList.Add("0155");
                Castle.m_EnvirList.Add("0156");
                if (Castle.m_EnvirList.Count > 0)
                {
                    for (int I = 0; I < Castle.m_EnvirList.Count; I++)
                    {
                        Castle.m_EnvirList[I] = M2Share.g_MapManager.FindMap(Castle.m_EnvirList[I]).sMapName;
                    }
                }
                Save();
                return;
            }
            for (int I = 0; I < m_CastleList.Count; I++)
            {
                Castle = m_CastleList[I];
                Castle.Initialize();
            }
        }
        public void ChangeSabukLord(TPlayObject PlayObject, string[] @Params)
        {
            string sCASTLENAME = @Params.Length > 0 ? @Params[0] : "";
            string sGuildName  = @Params.Length > 1 ? @Params[1] : "";
            bool   boFlag      = @Params.Length > 2 ? bool.Parse(@Params[2]) : false;

            if ((sCASTLENAME == "") || (sGuildName == ""))
            {
                PlayObject.SysMsg("命令格式: @" + this.Attributes.Name + " 城堡名称 行会名称", TMsgColor.c_Red, TMsgType.t_Hint);
                return;
            }
            TUserCastle Castle = M2Share.g_CastleManager.Find(sCASTLENAME);

            if (Castle == null)
            {
                PlayObject.SysMsg(String.Format(GameMsgDef.g_sGameCommandSbkGoldCastleNotFoundMsg, sCASTLENAME), TMsgColor.c_Red, TMsgType.t_Hint);
                return;
            }
            TGUild Guild = GuildManager.FindGuild(sGuildName);

            if (Guild != null)
            {
                M2Share.AddGameDataLog("27" + "\09" + Castle.m_sOwnGuild + "\09" + '0' + "\09" + '1' + "\09" + "sGuildName" + "\09"
                                       + PlayObject.m_sCharName + "\09" + '0' + "\09" + '1' + "\09" + '0');
                Castle.GetCastle(Guild);

                UserEngine.SendServerGroupMsg(Grobal2.SS_211, M2Share.nServerIndex, sGuildName);
                PlayObject.SysMsg(Castle.m_sName + " 所属行会已经更改为 " + sGuildName, TMsgColor.c_Green, TMsgType.t_Hint);
            }
            else
            {
                PlayObject.SysMsg("行会 " + sGuildName + "还没建立!!!", TMsgColor.c_Red, TMsgType.t_Hint);
            }
        }
Пример #3
0
        public void LoadCastleList()
        {
            TStringList LoadList;
            TUserCastle Castle;
            string      sCastleDir;

            if (File.Exists(M2Share.g_Config.sCastleFile))
            {
                LoadList = new TStringList();
                LoadList.LoadFromFile(M2Share.g_Config.sCastleFile);
                if (LoadList.Count > 0)
                {
                    for (int I = 0; I < LoadList.Count; I++)
                    {
                        sCastleDir = LoadList[I].Trim();
                        if (sCastleDir != "")
                        {
                            Castle = new TUserCastle(sCastleDir);
                            m_CastleList.Add(Castle);
                        }
                    }
                }
                Dispose(LoadList);
                M2Share.MainOutMessage("已读取 [" + m_CastleList.Count + "] 个城堡信息...");
            }
            else
            {
                M2Share.MainOutMessage("城堡列表文件未找到!!!");
            }
        }
Пример #4
0
        public TUserCastle GetCastle(int nIndex)
        {
            TUserCastle result = null;

            if ((nIndex >= 0) && (nIndex < m_CastleList.Count))
            {
                result = m_CastleList[nIndex];
            }
            return(result);
        }
Пример #5
0
        // 城堡皇宫所在地图
        public TUserCastle IsCastlePalaceEnvir(TEnvirnoment Envir)
        {
            TUserCastle result = null;

            if (m_CastleList.Count > 0)
            {
                result = m_CastleList.Find(u =>
                {
                    return(u.m_MapPalace == Envir);
                });
            }
            return(result);
        }
Пример #6
0
        public TUserCastle Find(string sCASTLENAME)
        {
            TUserCastle result = null;

            if (m_CastleList.Count > 0)
            {
                result = m_CastleList.Find(u =>
                {
                    return(u.m_sName == sCASTLENAME);
                });
            }
            return(result);
        }
Пример #7
0
        public void ForcedWallconquestWar(TPlayObject PlayObject, string[] @Params)
        {
            string sCASTLENAME = @Params.Length > 0 ? @Params[0] : "";
            string s20;
            TGUild Guild = null;

            if (sCASTLENAME == "")
            {
                if (GameConfig.boGMShowFailMsg)
                {
                    PlayObject.SysMsg("命令格式: @" + base.Attributes.Name + " 城堡名称", TMsgColor.c_Red, TMsgType.t_Hint);
                }
                return;
            }
            TUserCastle Castle = M2Share.g_CastleManager.Find(sCASTLENAME);

            if (Castle != null)
            {
                Castle.m_boUnderWar = !Castle.m_boUnderWar; // 设置为可以攻城
                if (Castle.m_boUnderWar)                    // 正在攻城
                {
                    if (GuildManager.GuildList.Count > 0)   // 增加所有行会为攻城行会
                    {
                        for (int I = 0; I < GuildManager.GuildList.Count; I++)
                        {
                            Guild = GuildManager.GuildList[I];
                            Castle.m_AttackGuildList.Add(Guild);
                        }
                    }
                    Castle.m_boShowOverMsg        = false;
                    Castle.m_WarDate              = DateTime.Now;
                    Castle.m_dwStartCastleWarTick = HUtil32.GetTickCount();
                    Castle.StartWallconquestWar();
                    UserEngine.SendServerGroupMsg(Grobal2.SS_212, M2Share.nServerIndex, "");
                    s20 = "[" + Castle.m_sName + " 攻城战已经开始]";
                    UserEngine.SendBroadCastMsg(s20, TMsgType.t_System);
                    UserEngine.SendServerGroupMsg(Grobal2.SS_204, M2Share.nServerIndex, s20);
                    Castle.MainDoorControl(true);
                }
                else
                {
                    Castle.StopWallconquestWar();
                }
            }
            else
            {
                PlayObject.SysMsg(string.Format(GameMsgDef.g_sGameCommandSbkGoldCastleNotFoundMsg, sCASTLENAME), TMsgColor.c_Red, TMsgType.t_Hint);
            }
        }
Пример #8
0
        /// <summary>
        /// 是否在攻城战争区域
        /// </summary>
        /// <param name="Envir"></param>
        /// <param name="nX"></param>
        /// <param name="nY"></param>
        /// <returns></returns>
        public TUserCastle InCastleWarArea(TEnvirnoment Envir, int nX, int nY)
        {
            TUserCastle result = null;
            TUserCastle Castle;

            if (m_CastleList.Count > 0)
            {
                for (int I = 0; I < m_CastleList.Count; I++)
                {
                    Castle = m_CastleList[I];
                    if (Castle.InCastleWarArea(Envir, nX, nY))
                    {
                        result = Castle;
                        break;
                    }
                }
            }
            return(result);
        }
Пример #9
0
        // 取得角色所在座标的城堡
        public TUserCastle InCastleWarArea(TBaseObject BaseObject)
        {
            TUserCastle result = null;
            TUserCastle Castle;

            if (m_CastleList.Count > 0)
            {
                for (int I = 0; I < m_CastleList.Count; I++)
                {
                    Castle = m_CastleList[I];
                    if (Castle.InCastleWarArea(BaseObject.m_PEnvir, BaseObject.m_nCurrX, BaseObject.m_nCurrY))
                    {
                        result = Castle;
                        break;
                    }
                }
            }
            return(result);
        }
Пример #10
0
        /// <summary>
        /// 是城堡成员
        /// </summary>
        /// <param name="BaseObject"></param>
        /// <returns></returns>
        public TUserCastle IsCastleMember(TBaseObject BaseObject)
        {
            TUserCastle result = null;
            TUserCastle Castle;

            if (m_CastleList.Count > 0)
            {
                for (int I = 0; I < m_CastleList.Count; I++)
                {
                    Castle = m_CastleList[I];
                    if (Castle != null)
                    {
                        if (Castle.IsMember(BaseObject))
                        {
                            result = Castle;
                            break;
                        }
                    }
                }
            }
            return(result);
        }
Пример #11
0
        /// <summary>
        /// 城堡所在地图
        /// </summary>
        /// <param name="Envir"></param>
        /// <returns></returns>
        public TUserCastle IsCastleEnvir(TEnvirnoment Envir)
        {
            TUserCastle result = null;

            if (m_CastleList.Count > 0)
            {
                result = m_CastleList.Find(u =>
                {
                    return(u.m_MapCastle == Envir);
                });
                //for (int I = 0; I < m_CastleList.Count; I++)
                //{
                //    Castle = m_CastleList[I];
                //    if (Castle.m_MapCastle == Envir)
                //    {
                //        result = Castle;
                //        break;
                //    }
                //}
            }
            return(result);
        }
        public void ForcedWallconquestWar(string[] @Params, TPlayObject PlayObject)
        {
            string sCASTLENAME = @Params.Length > 0 ? @Params[0] : "";

            if (sCASTLENAME == "")
            {
                PlayObject.SysMsg("命令格式: @" + this.Attributes.Name + " 城堡名称", TMsgColor.c_Red, TMsgType.t_Hint);
                return;
            }
            TUserCastle Castle = M2Share.g_CastleManager.Find(sCASTLENAME);

            if (Castle != null)
            {
                Castle.m_boUnderWar = !Castle.m_boUnderWar;
                if (Castle.m_boUnderWar)
                {
                    Castle.m_dwStartCastleWarTick = HUtil32.GetTickCount();
                    Castle.StartWallconquestWar();

                    // UserEngine.SendServerGroupMsg(SS_212, nServerIndex, '');
                    string s20 = '[' + Castle.m_sName + "攻城战已经开始]";
                    UserEngine.SendBroadCastMsg(s20, TMsgType.t_System);

                    // UserEngine.SendServerGroupMsg(SS_204, nServerIndex, s20);
                    Castle.MainDoorControl(true);
                }
                else
                {
                    Castle.StopWallconquestWar();
                }
            }
            else
            {
                PlayObject.SysMsg(String.Format(GameMsgDef.g_sGameCommandSbkGoldCastleNotFoundMsg, sCASTLENAME), TMsgColor.c_Red, TMsgType.t_Hint);
            }
        }
Пример #13
0
        // 重载相关设置
        public void ReLoadCastle()
        {
            TUserCastle Castle;
            TObjUnit    ObjUnit;
            TDoorInfo   Door;
            bool        boUnderWar;

            M2Share.g_Config.sGuildNotice     = M2Share.StringConf.ReadString("Guild", "GuildNotice", M2Share.g_Config.sGuildNotice);
            M2Share.g_Config.sGuildWar        = M2Share.StringConf.ReadString("Guild", "GuildWar", M2Share.g_Config.sGuildWar);
            M2Share.g_Config.sGuildAll        = M2Share.StringConf.ReadString("Guild", "GuildAll", M2Share.g_Config.sGuildAll);
            M2Share.g_Config.sGuildMember     = M2Share.StringConf.ReadString("Guild", "GuildMember", M2Share.g_Config.sGuildMember);
            M2Share.g_Config.sGuildMemberRank = M2Share.StringConf.ReadString("Guild", "GuildMemberRank", M2Share.g_Config.sGuildMemberRank);
            M2Share.g_Config.sGuildChief      = M2Share.StringConf.ReadString("Guild", "GuildChief", M2Share.g_Config.sGuildChief);
            if (m_CastleList.Count <= 0)
            {
                Castle = new TUserCastle(M2Share.g_Config.sCastleDir);
                m_CastleList.Add(Castle);
                Castle.Initialize();
                Castle.m_sConfigDir = "0";
                Castle.m_EnvirList.Add("0151");
                Castle.m_EnvirList.Add("0152");
                Castle.m_EnvirList.Add("0153");
                Castle.m_EnvirList.Add("0154");
                Castle.m_EnvirList.Add("0155");
                Castle.m_EnvirList.Add("0156");
                if (Castle.m_EnvirList.Count > 0)
                {
                    for (int I = 0; I < Castle.m_EnvirList.Count; I++)
                    {
                        Castle.m_EnvirList[I] = M2Share.g_MapManager.FindMap(Castle.m_EnvirList[I]).sMapName;
                    }
                }
                Save();
                return;
            }
            for (int I = 0; I < m_CastleList.Count; I++)
            {
                Castle              = m_CastleList[I];
                boUnderWar          = Castle.m_boUnderWar;
                Castle.m_boUnderWar = false;// 先初始状态
                Castle.LoadConfig(true);
                Castle.LoadAttackSabukWall();
                if (M2Share.g_MapManager.GetMapOfServerIndex(Castle.m_sMapName) == M2Share.nServerIndex)
                {
                    Castle.m_MapPalace = M2Share.g_MapManager.FindMap(Castle.m_sPalaceMap);
                    if (Castle.m_MapPalace == null)
                    {
                        M2Share.MainOutMessage(string.Format("皇宫地图{0}没找到!!!", Castle.m_sPalaceMap));
                    }
                    Castle.m_MapSecret = M2Share.g_MapManager.FindMap(Castle.m_sSecretMap);
                    if (Castle.m_MapSecret == null)
                    {
                        M2Share.MainOutMessage(string.Format("密道地图{0}没找到!!!", Castle.m_sSecretMap));
                    }
                    Castle.m_MapCastle = M2Share.g_MapManager.FindMap(Castle.m_sMapName);
                    if (Castle.m_MapCastle != null)
                    {
                        if (Castle.m_MainDoor.BaseObject != null)
                        {
                            if ((!Castle.m_MainDoor.BaseObject.m_boGhost) && (!Castle.m_MainDoor.BaseObject.m_boDeath) &&
                                (!Castle.m_MainDoor.BaseObject.m_boFixedHideMode) && ((Castle.m_MainDoor.BaseObject.m_sCharName).ToLower().CompareTo((Castle.m_MainDoor.sName).ToLower()) == 0))
                            {
                                if (Castle.m_MainDoor.BaseObject.m_WAbil.HP <= 0)
                                {
                                    Castle.m_MainDoor.BaseObject.ReAlive();
                                }
                                Castle.m_MainDoor.BaseObject.m_WAbil.HP = Castle.m_MainDoor.nHP;
                                Castle.m_MainDoor.BaseObject.SendRefMsg(Grobal2.RM_HEALTHSPELLCHANGED, 0, 0, 0, 0, "");
                                Castle.m_MainDoor.BaseObject.m_Castle = Castle;
                                M2Share.MainOutMessage("[城堡重载A-5] " + Castle.m_MainDoor.BaseObject.m_sCharName);
                            }
                            else
                            {
                                if (Castle.m_MainDoor.BaseObject != null)
                                {
                                    if (((Castle.m_MainDoor.BaseObject.m_sCharName).ToLower().CompareTo((Castle.m_MainDoor.sName).ToLower()) == 0))
                                    {
                                        if (!Castle.m_MainDoor.BaseObject.m_boDeath)
                                        {
                                            Castle.m_MainDoor.BaseObject.m_WAbil.HP = Castle.m_MainDoor.BaseObject.m_WAbil.MaxHP;
                                            ((TCastleDoor)(Castle.m_MainDoor.BaseObject)).RefStatus();
                                            Castle.m_MainDoor.BaseObject.m_Castle = Castle;
                                            M2Share.MainOutMessage("[城堡重载A-1] " + Castle.m_MainDoor.BaseObject.m_sCharName);
                                        }
                                        else
                                        {
                                            Castle.m_MainDoor.BaseObject.m_WAbil.HP = Castle.m_MainDoor.BaseObject.m_WAbil.MaxHP;
                                            ((TCastleDoor)(Castle.m_MainDoor.BaseObject)).m_boOpened = boUnderWar;// 城门是否关闭
                                            Castle.m_MainDoor.BaseObject.ReAlive();
                                            Castle.m_MainDoor.BaseObject.m_Castle = Castle;
                                            M2Share.MainOutMessage("[城堡重载A-2] " + Castle.m_MainDoor.BaseObject.m_sCharName);
                                        }
                                    }
                                    else
                                    {
                                        Castle.m_MainDoor.BaseObject = UserEngine.RegenMonsterByName(Castle.m_sMapName, Castle.m_MainDoor.nX, Castle.m_MainDoor.nY, Castle.m_MainDoor.sName);
                                        if (Castle.m_MainDoor.BaseObject != null)
                                        {
                                            Castle.m_MainDoor.BaseObject.m_WAbil.HP = Castle.m_MainDoor.nHP;
                                            Castle.m_MainDoor.BaseObject.m_Castle   = Castle;
                                            Castle.m_MainDoor.BaseObject.m_nCurrX   = Castle.m_MainDoor.nX;
                                            Castle.m_MainDoor.BaseObject.m_nCurrY   = Castle.m_MainDoor.nY;
                                            M2Share.MainOutMessage("[城堡重载A-3] " + Castle.m_MainDoor.BaseObject.m_sCharName);
                                        }
                                        else
                                        {
                                            M2Share.MainOutMessage("[错误信息] 城堡初始化城门失败,检查怪物数据库里有没城门的设置: " + Castle.m_MainDoor.sName);
                                        }
                                    }
                                }
                                else
                                {
                                    Castle.m_MainDoor.BaseObject = UserEngine.RegenMonsterByName(Castle.m_sMapName, Castle.m_MainDoor.nX, Castle.m_MainDoor.nY, Castle.m_MainDoor.sName);
                                    if (Castle.m_MainDoor.BaseObject != null)
                                    {
                                        Castle.m_MainDoor.BaseObject.m_WAbil.HP = Castle.m_MainDoor.nHP;
                                        Castle.m_MainDoor.BaseObject.m_Castle   = Castle;
                                        M2Share.MainOutMessage("[城堡重载A-4] " + Castle.m_MainDoor.BaseObject.m_sCharName);
                                    }
                                    else
                                    {
                                        M2Share.MainOutMessage("[错误信息] 城堡初始化城门失败,检查怪物数据库里有没城门的设置: " + Castle.m_MainDoor.sName);
                                    }
                                }
                            }
                            if (Castle.m_MainDoor.nStatus && (Castle.m_MainDoor.BaseObject != null))
                            {
                                ((TCastleDoor)(Castle.m_MainDoor.BaseObject)).Open();
                            }
                        }
                        else
                        {
                            M2Share.MainOutMessage("[错误信息] 城堡初始化城门失败,检查怪物数据库里有没城门的设置: " + Castle.m_MainDoor.sName);
                        }
                        if (Castle.m_LeftWall.BaseObject != null)
                        {
                            if ((!Castle.m_LeftWall.BaseObject.m_boGhost) && (!Castle.m_LeftWall.BaseObject.m_boDeath) && (!Castle.m_LeftWall.BaseObject.m_boFixedHideMode) &&
                                ((Castle.m_LeftWall.BaseObject.m_sCharName).ToLower().CompareTo((Castle.m_LeftWall.sName).ToLower()) == 0))
                            {
                                if (Castle.m_LeftWall.BaseObject.m_WAbil.HP <= 0)
                                {
                                    Castle.m_LeftWall.BaseObject.ReAlive();
                                }
                                Castle.m_LeftWall.BaseObject.m_WAbil.HP = Castle.m_LeftWall.nHP;
                                Castle.m_LeftWall.BaseObject.SendRefMsg(Grobal2.RM_HEALTHSPELLCHANGED, 0, 0, 0, 0, "");
                                Castle.m_LeftWall.BaseObject.m_Castle = Castle;
                                M2Share.MainOutMessage("[城堡重载B-5] " + Castle.m_LeftWall.BaseObject.m_sCharName);
                            }
                            else
                            {
                                if (Castle.m_LeftWall.BaseObject != null)
                                {
                                    if (((Castle.m_LeftWall.BaseObject.m_sCharName).ToLower().CompareTo((Castle.m_LeftWall.sName).ToLower()) == 0))
                                    {
                                        if (!Castle.m_LeftWall.BaseObject.m_boDeath)
                                        {
                                            Castle.m_LeftWall.BaseObject.m_WAbil.HP = Castle.m_LeftWall.BaseObject.m_WAbil.MaxHP;
                                            ((TWallStructure)(Castle.m_LeftWall.BaseObject)).RefStatus();
                                            Castle.m_LeftWall.BaseObject.m_Castle = Castle;
                                            M2Share.MainOutMessage("[城堡重载B-1] " + Castle.m_LeftWall.BaseObject.m_sCharName);
                                        }
                                        else
                                        {
                                            Castle.m_LeftWall.BaseObject.m_WAbil.HP = Castle.m_LeftWall.BaseObject.m_WAbil.MaxHP;
                                            Castle.m_LeftWall.BaseObject.ReAlive();
                                            Castle.m_LeftWall.BaseObject.m_Castle = Castle;
                                            M2Share.MainOutMessage("[城堡重载B-2] " + Castle.m_LeftWall.BaseObject.m_sCharName);
                                        }
                                    }
                                    else
                                    {
                                        Castle.m_LeftWall.BaseObject = UserEngine.RegenMonsterByName(Castle.m_sMapName, Castle.m_LeftWall.nX, Castle.m_LeftWall.nY, Castle.m_LeftWall.sName);
                                        if (Castle.m_LeftWall.BaseObject != null)
                                        {
                                            Castle.m_LeftWall.BaseObject.m_WAbil.HP = Castle.m_LeftWall.nHP;
                                            Castle.m_LeftWall.BaseObject.m_Castle   = Castle;
                                            Castle.m_LeftWall.BaseObject.m_nCurrX   = Castle.m_LeftWall.nX;
                                            Castle.m_LeftWall.BaseObject.m_nCurrY   = Castle.m_LeftWall.nY;
                                            M2Share.MainOutMessage("[城堡重载B-3] " + Castle.m_LeftWall.BaseObject.m_sCharName);
                                        }
                                        else
                                        {
                                            M2Share.MainOutMessage("[错误信息] 城堡初始化左城墙失败,检查怪物数据库里有没左城墙的设置: " + Castle.m_LeftWall.sName);
                                        }
                                    }
                                }
                                else
                                {
                                    Castle.m_LeftWall.BaseObject = UserEngine.RegenMonsterByName(Castle.m_sMapName, Castle.m_LeftWall.nX, Castle.m_LeftWall.nY, Castle.m_LeftWall.sName);
                                    if (Castle.m_LeftWall.BaseObject != null)
                                    {
                                        Castle.m_LeftWall.BaseObject.m_WAbil.HP = Castle.m_LeftWall.nHP;
                                        Castle.m_LeftWall.BaseObject.m_Castle   = Castle;
                                        M2Share.MainOutMessage("[城堡重载B-4] " + Castle.m_LeftWall.BaseObject.m_sCharName);
                                    }
                                    else
                                    {
                                        M2Share.MainOutMessage("[错误信息] 城堡初始化左城墙失败,检查怪物数据库里有没左城墙的设置: " + Castle.m_LeftWall.sName);
                                    }
                                }
                            }
                        }
                        else
                        {
                            M2Share.MainOutMessage("[错误信息] 城堡初化左城墙失败,检查怪物数据库里有没左城墙的设置: " + Castle.m_LeftWall.sName);
                        }
                        if (Castle.m_CenterWall.BaseObject != null)
                        {
                            if ((!Castle.m_CenterWall.BaseObject.m_boGhost) && (!Castle.m_CenterWall.BaseObject.m_boDeath) && (!Castle.m_CenterWall.BaseObject.m_boFixedHideMode) && ((Castle.m_CenterWall.BaseObject.m_sCharName).ToLower().CompareTo((Castle.m_CenterWall.sName).ToLower()) == 0))
                            {
                                if (Castle.m_CenterWall.BaseObject.m_WAbil.HP <= 0)
                                {
                                    Castle.m_CenterWall.BaseObject.ReAlive();
                                }
                                Castle.m_CenterWall.BaseObject.m_WAbil.HP = Castle.m_CenterWall.nHP;
                                Castle.m_CenterWall.BaseObject.SendRefMsg(Grobal2.RM_HEALTHSPELLCHANGED, 0, 0, 0, 0, "");
                                Castle.m_CenterWall.BaseObject.m_Castle = Castle;
                                M2Share.MainOutMessage("[城堡重载C-5] " + Castle.m_CenterWall.BaseObject.m_sCharName);
                            }
                            else
                            {
                                if (Castle.m_CenterWall.BaseObject != null)
                                {
                                    if (((Castle.m_CenterWall.BaseObject.m_sCharName).ToLower().CompareTo((Castle.m_CenterWall.sName).ToLower()) == 0))
                                    {
                                        if (!Castle.m_CenterWall.BaseObject.m_boDeath)
                                        {
                                            Castle.m_CenterWall.BaseObject.m_WAbil.HP = Castle.m_CenterWall.BaseObject.m_WAbil.MaxHP;
                                            ((TWallStructure)(Castle.m_CenterWall.BaseObject)).RefStatus();
                                            Castle.m_CenterWall.BaseObject.m_Castle = Castle;
                                            M2Share.MainOutMessage("[城堡重载C-1] " + Castle.m_CenterWall.BaseObject.m_sCharName);
                                        }
                                        else
                                        {
                                            Castle.m_CenterWall.BaseObject.m_WAbil.HP = Castle.m_CenterWall.BaseObject.m_WAbil.MaxHP;
                                            Castle.m_CenterWall.BaseObject.ReAlive();
                                            Castle.m_CenterWall.BaseObject.m_Castle = Castle;
                                            M2Share.MainOutMessage("[城堡重载C-2] " + Castle.m_CenterWall.BaseObject.m_sCharName);
                                        }
                                    }
                                    else
                                    {
                                        Castle.m_CenterWall.BaseObject = UserEngine.RegenMonsterByName(Castle.m_sMapName, Castle.m_CenterWall.nX, Castle.m_CenterWall.nY, Castle.m_CenterWall.sName);
                                        if (Castle.m_CenterWall.BaseObject != null)
                                        {
                                            Castle.m_CenterWall.BaseObject.m_WAbil.HP = Castle.m_CenterWall.nHP;
                                            Castle.m_CenterWall.BaseObject.m_Castle   = Castle;
                                            Castle.m_CenterWall.BaseObject.m_nCurrX   = Castle.m_CenterWall.nX;
                                            Castle.m_CenterWall.BaseObject.m_nCurrY   = Castle.m_CenterWall.nY;
                                            M2Share.MainOutMessage("[城堡重载C-3] " + Castle.m_CenterWall.BaseObject.m_sCharName);
                                        }
                                        else
                                        {
                                            M2Share.MainOutMessage("[错误信息] 城堡初始化中城墙失败,检查怪物数据库里有没中城墙的设置: " + Castle.m_CenterWall.sName);
                                        }
                                    }
                                }
                                else
                                {
                                    Castle.m_CenterWall.BaseObject = UserEngine.RegenMonsterByName(Castle.m_sMapName, Castle.m_CenterWall.nX, Castle.m_CenterWall.nY, Castle.m_CenterWall.sName);
                                    if (Castle.m_CenterWall.BaseObject != null)
                                    {
                                        Castle.m_CenterWall.BaseObject.m_WAbil.HP = Castle.m_CenterWall.nHP;
                                        Castle.m_CenterWall.BaseObject.m_Castle   = Castle;
                                        M2Share.MainOutMessage("[城堡重载C-4] " + Castle.m_CenterWall.BaseObject.m_sCharName);
                                    }
                                    else
                                    {
                                        M2Share.MainOutMessage("[错误信息] 城堡初始化中城墙失败,检查怪物数据库里有没中城墙的设置: " + Castle.m_CenterWall.sName);
                                    }
                                }
                            }
                        }
                        else
                        {
                            M2Share.MainOutMessage("[错误信息] 城堡初始化中城墙失败,检查怪物数据库里有没中城墙的设置: " + Castle.m_CenterWall.sName);
                        }
                        if (Castle.m_RightWall.BaseObject != null)
                        {
                            if ((!Castle.m_RightWall.BaseObject.m_boGhost) && (!Castle.m_RightWall.BaseObject.m_boDeath) && (!Castle.m_RightWall.BaseObject.m_boFixedHideMode) && ((Castle.m_RightWall.BaseObject.m_sCharName).ToLower().CompareTo((Castle.m_RightWall.sName).ToLower()) == 0))
                            {
                                if (Castle.m_RightWall.BaseObject.m_WAbil.HP <= 0)
                                {
                                    Castle.m_RightWall.BaseObject.ReAlive();
                                }
                                Castle.m_RightWall.BaseObject.m_WAbil.HP = Castle.m_RightWall.nHP;
                                Castle.m_RightWall.BaseObject.SendRefMsg(Grobal2.RM_HEALTHSPELLCHANGED, 0, 0, 0, 0, "");
                                Castle.m_RightWall.BaseObject.m_Castle = Castle;
                                M2Share.MainOutMessage("[城堡重载D-5] " + Castle.m_RightWall.BaseObject.m_sCharName);
                            }
                            else
                            {
                                if (Castle.m_RightWall.BaseObject != null)
                                {
                                    if (((Castle.m_RightWall.BaseObject.m_sCharName).ToLower().CompareTo((Castle.m_RightWall.sName).ToLower()) == 0))
                                    {
                                        if (!Castle.m_RightWall.BaseObject.m_boDeath)
                                        {
                                            Castle.m_RightWall.BaseObject.m_WAbil.HP = Castle.m_RightWall.BaseObject.m_WAbil.MaxHP;
                                            ((TWallStructure)(Castle.m_RightWall.BaseObject)).RefStatus();
                                            Castle.m_RightWall.BaseObject.m_Castle = Castle;
                                            M2Share.MainOutMessage("[城堡重载D-1] " + Castle.m_RightWall.BaseObject.m_sCharName);
                                        }
                                        else
                                        {
                                            Castle.m_RightWall.BaseObject.m_WAbil.HP = Castle.m_RightWall.BaseObject.m_WAbil.MaxHP;
                                            Castle.m_RightWall.BaseObject.ReAlive();
                                            Castle.m_RightWall.BaseObject.m_Castle = Castle;
                                            M2Share.MainOutMessage("[城堡重载D-2] " + Castle.m_RightWall.BaseObject.m_sCharName);
                                        }
                                    }
                                    else
                                    {
                                        Castle.m_RightWall.BaseObject = UserEngine.RegenMonsterByName(Castle.m_sMapName, Castle.m_RightWall.nX, Castle.m_RightWall.nY, Castle.m_RightWall.sName);
                                        if (Castle.m_RightWall.BaseObject != null)
                                        {
                                            Castle.m_RightWall.BaseObject.m_WAbil.HP = Castle.m_RightWall.nHP;
                                            Castle.m_RightWall.BaseObject.m_Castle   = Castle;
                                            Castle.m_RightWall.BaseObject.m_nCurrX   = Castle.m_RightWall.nX;
                                            Castle.m_RightWall.BaseObject.m_nCurrY   = Castle.m_RightWall.nY;
                                            M2Share.MainOutMessage("[城堡重载D-3] " + Castle.m_RightWall.BaseObject.m_sCharName);
                                        }
                                        else
                                        {
                                            M2Share.MainOutMessage("[错误信息] 城堡初始化右城墙失败,检查怪物数据库里有没右城墙的设置: " + Castle.m_RightWall.sName);
                                        }
                                    }
                                }
                                else
                                {
                                    Castle.m_RightWall.BaseObject = UserEngine.RegenMonsterByName(Castle.m_sMapName, Castle.m_RightWall.nX, Castle.m_RightWall.nY, Castle.m_RightWall.sName);
                                    if (Castle.m_RightWall.BaseObject != null)
                                    {
                                        Castle.m_RightWall.BaseObject.m_WAbil.HP = Castle.m_RightWall.nHP;
                                        Castle.m_RightWall.BaseObject.m_Castle   = Castle;
                                        M2Share.MainOutMessage("[城堡重载D-4] " + Castle.m_RightWall.BaseObject.m_sCharName);
                                    }
                                    else
                                    {
                                        M2Share.MainOutMessage("[错误信息] 城堡初始化右城墙失败,检查怪物数据库里有没右城墙的设置: " + Castle.m_RightWall.sName);
                                    }
                                }
                            }
                        }
                        else
                        {
                            M2Share.MainOutMessage("[错误信息] 城堡初始化右城墙失败,检查怪物数据库里有没右城墙的设置: " + Castle.m_RightWall.sName);
                        }
                        for (int K = Castle.m_Archer.GetLowerBound(0); K <= Castle.m_Archer.GetUpperBound(0); K++)
                        {
                            ObjUnit = Castle.m_Archer[K];
                            if (ObjUnit.nHP <= 0)
                            {
                                continue;
                            }
                            if (ObjUnit.BaseObject != null)
                            {
                                ObjUnit.BaseObject.m_WAbil.HP = Castle.m_Archer[K].nHP;
                                ObjUnit.BaseObject.m_Castle   = Castle;
                                ((TGuardUnit)(ObjUnit.BaseObject)).m_nX550      = ObjUnit.nX;
                                ((TGuardUnit)(ObjUnit.BaseObject)).m_nY554      = ObjUnit.nY;
                                ((TGuardUnit)(ObjUnit.BaseObject)).m_nDirection = 3;
                            }
                            else
                            {
                                M2Share.MainOutMessage("[错误信息] 城堡初始化弓箭手失败,检查怪物数据库里有没弓箭手的设置: " + ObjUnit.sName);
                            }
                        }
                        for (int K = Castle.m_Guard.GetLowerBound(0); K <= Castle.m_Guard.GetUpperBound(0); K++)
                        {
                            ObjUnit = Castle.m_Guard[K];
                            if (ObjUnit.nHP <= 0)
                            {
                                continue;
                            }
                            if (ObjUnit.BaseObject != null)
                            {
                                ObjUnit.BaseObject.m_WAbil.HP = Castle.m_Guard[K].nHP;
                            }
                            else
                            {
                                M2Share.MainOutMessage("[错误信息] 城堡初始化守卫失败(检查怪物数据库里有没守卫怪物)");
                            }
                        }
                        if (Castle.m_MapCastle.m_DoorList.Count > 0)
                        {
                            for (int K = 0; K < Castle.m_MapCastle.m_DoorList.Count; K++)
                            {
                                Door = Castle.m_MapCastle.m_DoorList[K];
                                if ((Math.Abs(Door.nX - Castle.m_nPalaceDoorX) <= 3) && (Math.Abs(Door.nY - Castle.m_nPalaceDoorY) <= 3))
                                {
                                    Castle.m_DoorStatus = Door.Status;
                                }
                            }
                        }
                    }
                    else
                    {
                        M2Share.MainOutMessage(string.Format("[错误信息] 城堡所在地图不存在(检查地图配置文件里是否有地图{0}的设置)", Castle.m_sMapName));
                    }
                }
                Castle.m_boUnderWar = boUnderWar;
                if (Castle.m_boUnderWar)
                {
                    if (((TCastleDoor)(Castle.m_MainDoor.BaseObject)).m_boOpened)
                    {
                        ((TCastleDoor)(Castle.m_MainDoor.BaseObject)).Close();
                    }
                    if (Castle.m_LeftWall.BaseObject != null)
                    {
                        Castle.m_LeftWall.BaseObject.m_boStoneMode = false;
                    }
                    if (Castle.m_CenterWall.BaseObject != null)
                    {
                        Castle.m_CenterWall.BaseObject.m_boStoneMode = false;
                    }
                    if (Castle.m_RightWall.BaseObject != null)
                    {
                        Castle.m_RightWall.BaseObject.m_boStoneMode = false;
                    }
                }
            }
        }