예제 #1
0
        public object Clone()
        {
            KingOfBattleQiZhiConfig obj = new KingOfBattleQiZhiConfig()
            {
                NPCID          = NPCID,
                PosX           = PosX,
                PosY           = PosY,
                QiZhiMonsterID = QiZhiMonsterID,
            };

            return(obj);
        }
예제 #2
0
        /// <summary>
        /// 怪物死亡时
        /// </summary>
        /// <param name="npcID"></param>
        /// <param name="bhid"></param>
        public void OnProcessMonsterDead(GameClient client, Monster monster)
        {
#if ___CC___FUCK___YOU___BB___
            // 战旗
            if (null != client && (monster.XMonsterInfo.MonsterId == RuntimeData.BattleQiZhiMonsterID1 ||
                                   monster.XMonsterInfo.MonsterId == RuntimeData.BattleQiZhiMonsterID2))
            {
                KingOfBattleScene       scene       = client.SceneObject as KingOfBattleScene;
                KingOfBattleQiZhiConfig qizhiConfig = monster.Tag as KingOfBattleQiZhiConfig;
                if (null != scene && null != qizhiConfig)
                {
                    lock (RuntimeData.Mutex)
                    {
                        qizhiConfig.DeadTicks       = TimeUtil.NOW();
                        qizhiConfig.Alive           = false;
                        qizhiConfig.BattleWhichSide = client.ClientData.BattleWhichSide;
                        CalculateTeleportGateState(scene);
                    }
                }
            }
#else
            // 战旗
            if (null != client && (monster.MonsterInfo.ExtensionID == RuntimeData.BattleQiZhiMonsterID1 ||
                                   monster.MonsterInfo.ExtensionID == RuntimeData.BattleQiZhiMonsterID2))
            {
                KingOfBattleScene       scene       = client.SceneObject as KingOfBattleScene;
                KingOfBattleQiZhiConfig qizhiConfig = monster.Tag as KingOfBattleQiZhiConfig;
                if (null != scene && null != qizhiConfig)
                {
                    lock (RuntimeData.Mutex)
                    {
                        qizhiConfig.DeadTicks       = TimeUtil.NOW();
                        qizhiConfig.Alive           = false;
                        qizhiConfig.BattleWhichSide = client.ClientData.BattleWhichSide;
                        CalculateTeleportGateState(scene);
                    }
                }
            }
#endif

            // 杀塔
            KingOfBattleDynamicMonsterItem monsterConfig = monster.Tag as KingOfBattleDynamicMonsterItem;
            if (null != monsterConfig && (monsterConfig.MonsterType == (int)KingOfBattleMonsterType.KingOfBattle_TowerFirst ||
                                          monsterConfig.MonsterType == (int)KingOfBattleMonsterType.KingOfBattle_TowerSecond))
            {
                KingOfBattleScene scene = null; // 尝试开本方光幕
                if (SceneDict.TryGetValue(client.ClientData.FuBenSeqID, out scene))
                {
                    CopyMap copyMap = scene.CopyMap;
                    string  msgText = string.Format(Global.GetLang("【{0}】摧毁了敌方箭塔,激活了本方密道!"), Global.FormatRoleName4(client));
                    if (client.ClientData.BattleWhichSide == 1 && scene.GuangMuNotify1 == false)
                    {
                        scene.GuangMuNotify1 = true;
                        GameManager.CopyMapMgr.AddGuangMuEvent(copyMap, client.ClientData.BattleWhichSide, 0);
                        GameManager.ClientMgr.BroadSpecialCopyMapMsg(copyMap, msgText);
                    }
                    else if (client.ClientData.BattleWhichSide == 2 && scene.GuangMuNotify2 == false)
                    {
                        scene.GuangMuNotify2 = true;
                        GameManager.CopyMapMgr.AddGuangMuEvent(copyMap, client.ClientData.BattleWhichSide, 0);
                        GameManager.ClientMgr.BroadSpecialCopyMapMsg(copyMap, msgText);
                    }
                    msgText = string.Format(Global.GetLang("【{0}】摧毁了敌方箭塔!"), Global.FormatRoleName4(client));
                    GameManager.ClientMgr.BroadSpecialCopyMapMsg(copyMap, msgText);
                }
            }

            // 杀水晶堡垒
            if (null != monsterConfig && monsterConfig.MonsterType == (int)KingOfBattleMonsterType.KingOfBattle_BaoLei)
            {
                KingOfBattleScene scene = null;
                if (SceneDict.TryGetValue(client.ClientData.FuBenSeqID, out scene))
                {
                    ProcessEnd(scene, client.ClientData.BattleWhichSide, TimeUtil.NOW());
                }
            }

            // 杀Boss
            if (null != monsterConfig && monsterConfig.MonsterType == (int)KingOfBattleMonsterType.KingOfBattle_Boss)
            {
                KingOfBattleScene scene = null;
                if (SceneDict.TryGetValue(client.ClientData.FuBenSeqID, out scene))
                {
                    string msgText = string.Format(Global.GetLang("【{0}】击杀了BOSS!"), Global.FormatRoleName4(client));
                    GameManager.ClientMgr.BroadSpecialCopyMapMsg(scene.CopyMap, msgText);
                }
            }
        }