//创建一个 来自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); }