Exemple #1
0
        //创建一个 来自WorldBOSS表 的 特殊怪物
        public ObjNPC CreateSpeMonster(Scene _this, WorldBOSSRecord record)
        {
            var alwaysRecords   = _this.SpeMonsterAlwaysRecords;
            var afterDieRecords = _this.SpeMonsterAfterDieRecordIds;

            if (record.RefleshRole == (int)eSpeMonsterRefreshType.OnTime)
            {
//如果是一直刷新,那么要判断一下当前存活的数量
                if (alwaysRecords.ContainsKey(record.Id) && alwaysRecords[record.Id] >= record.MaxCount)
                {
                    return(null);
                }
                alwaysRecords.modifyValue(record.Id, 1);
            }
            else if (record.RefleshRole == (int)eSpeMonsterRefreshType.AfterDie)
            {
//死后自动刷新的怪,所以如果该场景已经有造过该record id,就不再重造了
                if (afterDieRecords.Contains(record.Id))
                {
                    return(null);
                }
                afterDieRecords.Add(record.Id);
            }

            var obj = _this.CreateSceneNpc(record.SceneNpc);

            if (obj == null)
            {
                PlayerLog.WriteLog((ulong)LogType.SpeMonster, "In CreateSpeMonster obj == null,scene npc id = {0}",
                                   record.SceneNpc);
            }
            else
            {
                Logger.Info("ObjNPC CreateSpeMonster({0})", record.SceneNpc);
            }
            if (record.RefleshRole == (int)eSpeMonsterRefreshType.OnTime)
            {
//如果是一直刷新,则要保存一下这个怪物
                Log(_this, Logger, "OnTime monster created!SceneNpc = {0}", record.SceneNpc);
                _this.SpeMonsterToWorldBossId.Add(obj, record.Id);
            }

            return(obj);
        }