using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using Microsoft.Extensions.Logging;
using STT = global::System.Threading.Tasks;
using AdminService.GameConfigs;
using AutoMapper;
using ChessGameDomain;
using ChessGameService;
using Common;
using Common.Utils;
using CommonDomain;
using CommonDomain.BaseModel;
using CommonDomain.Enum;
using CommonInfrastructure;
using FishRoomService.RoomService;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
using RedisService;
using XAct;
using static CommonDomain.BaseModel.BossConfig;
using static CommonDomain.BaseModel.BossConfig.BossBombConfig;
using static CommonDomain.BaseModel.BossConfig.BossProbabilityConfig;
using static CommonDomain.BaseModel.BossConfig.BossProbabilityConfigParam;
using static CommonDomain.BaseModel.BossConfig.LuckWheelConfig;
using static CommonDomain.BaseModel.BossConfig.CruiseConfigCount;
using static CommonDomain.BaseModel.BossConfig.ScorpionItemCountConfig;
using static CommonDomain.BaseModel.BossConfig.ScorpionItemConfig;
using static CommonDomain.BaseModel.BossOptionBaseParam;
using static CommonDomain.BaseModel.BattleOrderConfig;
using BattleOrderConfigLevel = CommonDomain.BaseModel.BattleOrderConfig.BattleOrderLevelConfig;
using BattleOrderConfigAdvance = CommonDomain.BaseModel.BattleOrderConfig.AdvanceGiftConfig;
namespace AdminApi.GameConfigs
{
[ApiController, Route("adminapi/[controller]")]
public class GameConfigController : BaseController
{
private readonly IGameConfigService _gameConfigService;
private readonly IMapper _mapper;
private readonly IRedisService _redisService;
public GameConfigController(IGameConfigService gameConfigService, IMapper mapper, IRedisService redisService)
{
_gameConfigService = gameConfigService;
_mapper = mapper;
_redisService = redisService;
}
///
/// 一键初始化所有配置(GameConfig + ActivityConfig)
///
[HttpGet("init-all")]
public async Task> InitAll([FromServices] IActivityConfigService activityConfigService)
{
await InitGameConfigInternal();
await InitActivityConfigInternal(activityConfigService);
return this.ToResult("所有配置初始化成功");
}
///
/// 初始化游戏配置(仅 GameConfig)
///
[HttpGet("init-game")]
public async Task> InitGame()
{
await InitGameConfigInternal();
return this.ToResult("游戏配置初始化成功");
}
///
/// 初始化指定板块(从gameconfig.json读取该板块数据,不影响其他配置)
///
[HttpGet("InitSection/{sectionName}")]
public async Task> InitSection(string sectionName)
{
if (sectionName == "RoomFishProbabilityList")
{
var jsonPath = global::System.IO.Path.Combine(AppContext.BaseDirectory, "Config", "gameconfig.json");
if (!global::System.IO.File.Exists(jsonPath))
return this.ToFailResult("gameconfig.json 不存在");
try
{
var json = await global::System.IO.File.ReadAllTextAsync(jsonPath);
var cfg = global::System.Text.Json.JsonSerializer.Deserialize(json, new global::System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true, ReadCommentHandling = global::System.Text.Json.JsonCommentHandling.Skip });
if (cfg?.RoomFishConfigs == null)
return this.ToFailResult("配置中无 RoomFishConfigs 数据");
var existing = await _gameConfigService.Get() ?? new GameConfig();
foreach (var jsonRoomCfg in cfg.RoomFishConfigs)
{
var target = existing.RoomFishConfigs.FirstOrDefault(r => r.GameType == jsonRoomCfg.GameType);
if (target != null)
target.RoomFishProbabilityList = jsonRoomCfg.RoomFishProbabilityList;
}
var res = await _gameConfigService.Update(existing);
return res.isok ? this.ToResult("RoomFishProbabilityList 初始化成功") : this.ToFailResult(res.msg);
}
catch (global::System.Text.Json.JsonException ex)
{
return this.ToFailResult($"gameconfig.json 解析失败: {ex.Message}");
}
}
var prop = typeof(GameConfig).GetProperty(sectionName);
if (prop == null)
return this.ToFailResult($"板块 {sectionName} 不存在");
var jsonPath2 = global::System.IO.Path.Combine(AppContext.BaseDirectory, "Config", "gameconfig.json");
if (!global::System.IO.File.Exists(jsonPath2))
return this.ToFailResult("gameconfig.json 不存在,请先执行全量初始化");
try
{
var json2 = await global::System.IO.File.ReadAllTextAsync(jsonPath2);
var cfg2 = global::System.Text.Json.JsonSerializer.Deserialize(json2, new global::System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true, ReadCommentHandling = global::System.Text.Json.JsonCommentHandling.Skip });
if (cfg2 == null)
return this.ToFailResult("配置解析失败");
var sectionValue = prop.GetValue(cfg2);
if (sectionValue == null)
return this.ToFailResult($"板块 {sectionName} 数据为空");
var existing = await _gameConfigService.Get() ?? new GameConfig();
prop.SetValue(existing, sectionValue);
var res = await _gameConfigService.Update(existing);
return res.isok
? this.ToResult($"{sectionName} 初始化成功")
: this.ToFailResult(res.msg);
}
catch (global::System.Text.Json.JsonException ex)
{
return this.ToFailResult($"gameconfig.json 解析失败: {ex.Message}");
}
}
///
/// 保存指定板块到 gameconfig.json(将当前 MongoDB 配置写回初始化文件)
///
[HttpGet("SaveSection/{sectionName}")]
public async Task> SaveSection(string sectionName)
{
if (sectionName == "RoomFishProbabilityList")
{
var config = await _gameConfigService.Get();
if (config?.RoomFishConfigs == null)
return this.ToFailResult("配置不存在");
var jsonPath = global::System.IO.Path.Combine(AppContext.BaseDirectory, "Config", "gameconfig.json");
GameConfig fileConfig;
if (global::System.IO.File.Exists(jsonPath))
{
var json = await global::System.IO.File.ReadAllTextAsync(jsonPath);
fileConfig = global::System.Text.Json.JsonSerializer.Deserialize(json, new global::System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true, ReadCommentHandling = global::System.Text.Json.JsonCommentHandling.Skip }) ?? new GameConfig();
}
else
{
fileConfig = new GameConfig();
}
foreach (var mongoRoomCfg in config.RoomFishConfigs)
{
var target = fileConfig.RoomFishConfigs.FirstOrDefault(r => r.GameType == mongoRoomCfg.GameType);
if (target != null)
target.RoomFishProbabilityList = mongoRoomCfg.RoomFishProbabilityList;
}
try
{
var output = global::System.Text.Json.JsonSerializer.Serialize(fileConfig, new global::System.Text.Json.JsonSerializerOptions { WriteIndented = true, Encoder = global::System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping });
await global::System.IO.File.WriteAllTextAsync(jsonPath, output);
return this.ToResult("RoomFishProbabilityList 保存成功");
}
catch (Exception ex)
{
return this.ToFailResult($"保存失败: {ex.Message}");
}
}
var prop = typeof(GameConfig).GetProperty(sectionName);
if (prop == null)
return this.ToFailResult($"板块 {sectionName} 不存在");
var config2 = await _gameConfigService.Get();
if (config2 == null)
return this.ToFailResult("配置不存在,请先执行全量初始化");
var sectionValue = prop.GetValue(config2);
if (sectionValue == null)
return this.ToFailResult($"板块 {sectionName} 数据为空");
var jsonPath2 = global::System.IO.Path.Combine(AppContext.BaseDirectory, "Config", "gameconfig.json");
GameConfig fileConfig2;
if (global::System.IO.File.Exists(jsonPath2))
{
var json2 = await global::System.IO.File.ReadAllTextAsync(jsonPath2);
fileConfig2 = global::System.Text.Json.JsonSerializer.Deserialize(json2, new global::System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true, ReadCommentHandling = global::System.Text.Json.JsonCommentHandling.Skip }) ?? new GameConfig();
}
else
{
fileConfig2 = new GameConfig();
}
prop.SetValue(fileConfig2, sectionValue);
try
{
var output2 = global::System.Text.Json.JsonSerializer.Serialize(fileConfig2, new global::System.Text.Json.JsonSerializerOptions { WriteIndented = true, Encoder = global::System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping });
await global::System.IO.File.WriteAllTextAsync(jsonPath2, output2);
return this.ToResult($"{sectionName} 保存成功");
}
catch (Exception ex)
{
return this.ToFailResult($"保存失败: {ex.Message}");
}
}
///
/// 初始化活动配置(仅 ActivityConfig)
///
[HttpGet("init-activity")]
public async Task> InitActivity([FromServices] IActivityConfigService activityConfigService)
{
await InitActivityConfigInternal(activityConfigService);
return this.ToResult("活动配置初始化成功");
}
///
/// 初始化活动配置单个板块(从 activityconfig.json 读取)
///
[HttpGet("InitActivitySection/{sectionName}")]
public async Task> InitActivitySection(string sectionName, [FromServices] IActivityConfigService activityConfigService)
{
var prop = typeof(ActivityConfig).GetProperty(sectionName);
if (prop == null)
return this.ToFailResult($"板块 {sectionName} 不存在");
var jsonPath = global::System.IO.Path.Combine(AppContext.BaseDirectory, "Config", "activityconfig.json");
if (!global::System.IO.File.Exists(jsonPath))
return this.ToFailResult("activityconfig.json 不存在");
try
{
var json = await global::System.IO.File.ReadAllTextAsync(jsonPath);
var cfg = global::System.Text.Json.JsonSerializer.Deserialize(json, new global::System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true, ReadCommentHandling = global::System.Text.Json.JsonCommentHandling.Skip });
if (cfg == null)
return this.ToFailResult("配置解析失败");
var sectionValue = prop.GetValue(cfg);
if (sectionValue == null)
return this.ToFailResult($"板块 {sectionName} 数据为空");
var existing = await activityConfigService.Get() ?? new ActivityConfig();
prop.SetValue(existing, sectionValue);
await activityConfigService.Update(existing);
return this.ToResult($"{sectionName} 初始化成功");
}
catch (global::System.Text.Json.JsonException ex)
{
return this.ToFailResult($"activityconfig.json 解析失败: {ex.Message}");
}
}
private async STT.Task InitGameConfigInternal()
{
var jsonPath = global::System.IO.Path.Combine(AppContext.BaseDirectory, "Config", "gameconfig.json");
if (global::System.IO.File.Exists(jsonPath))
{
try
{
var json = await global::System.IO.File.ReadAllTextAsync(jsonPath, global::System.Text.Encoding.UTF8);
var cfg = global::System.Text.Json.JsonSerializer.Deserialize(json, new global::System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true, ReadCommentHandling = global::System.Text.Json.JsonCommentHandling.Skip });
if (cfg != null)
{
await _gameConfigService.Delete();
await _gameConfigService.Update(cfg);
return;
}
}
catch (Exception ex)
{
Console.Error.WriteLine($"gameconfig.json 加载失败,回退到代码初始化: {ex.Message}");
}
}
await _gameConfigService.Delete();
GameConfig config = new GameConfig();
var roomFishConfigs = new RoomFishConfig() { GameType = GameTypeEnum.风雷之渊 };
int id = 11000;
var names = new string[] { "彩虹鱼", "小丑鱼", "热带鱼", "乌贼", "箭鱼", "斑点鱼", "海龟", "小河豚", "蝴蝶鱼", "裙摆鱼", "水母", "海马", "锅盔鱼", "蝙蝠鱼", "锯齿鲨", "鲨鱼" };
var scores = new int[] { 2, 3, 4, 5, 6, 7, 8, 10, 12, 15, 18, 20, 25, 30, 40, 50 };
var killWeight = new int[] { 5000, 3333, 2500, 2000, 1666, 1428, 1250, 1000, 833, 666, 555, 500, 400, 333, 250, 222 };
var pathList = new List>() {
new List { 1,2,3,4,5,6,7,8 },
new List { 9,10,11,12,13,14,15,16 },
new List { 17,18,19,20,21,22,23,24 },
new List { 25,26,27,28,29,30,31,32 },
new List { 33,34,35,36,37,38,39,40 },
new List { 41,42,43,44,45,46,47,48 },
new List { 49,50,51,52,53,54,55,56 },
new List { 57,58,59,60,61,62,63,64 },
new List { 65,66,67,68,69,70,71,72 },
new List { 73,74,75,76,77,78,79,80 },
new List { 81,82,83,84,85,86,87,88 },
new List { 89,90,91,92,93,94,95,96 },
new List { 97,98,99,100,101,102,103,104 },
new List { 105,106,107,108,109,110,111,112 },
new List { 113,114,115,116,117,118,119,120 },
new List { 121,122,123,124,125,126,127,128 }
};
for (int i = 0; i < names.Count(); i++)
{
id++;
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishScore = scores[i], FishType = FishTypeEnum.普通鱼, KillWeight = killWeight[i], PathList = pathList[i] });
roomFishConfigs.NormalFishList.Add(new RoomFishDetailConfig() { Type = 1, FishNumber = id.ToString(), MaxCount = 1, FishFrequency = 5, FishWeight = 40, Times = 20 });
}
names = new string[] { "银绞鲨", "金绞鲨", "黄金锅盔鱼", "金钱龟", "黄金水母", "金龙鱼" };
killWeight = new int[] { 166, 100, 83, 66, 50, 40 };
scores = new int[] { 60, 100, 120, 150, 200, 250 };
pathList = new List>() {
new List { 129,130,131,132,133,134,135,136 },
new List { 137,138,139,140,141,142,143,144 },
new List { 145,146,147,148,149,150,151,152 },
new List { 153,154,155,156,157,158,159,160 },
new List { 161,162,163,164,165,166,167,168 },
new List { 169,170,171,172,173,174,175,176 } };
for (int i = 0; i < names.Count(); i++)
{
id++;
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishScore = scores[i], FishType = FishTypeEnum.黄金鱼, KillWeight = killWeight[i], PathList =pathList[i] });
roomFishConfigs.NormalFishList.Add(new RoomFishDetailConfig() { Type = 1, FishNumber = id.ToString(), MaxCount = 1, FishFrequency = 5, FishWeight = 40, Times = 25 });
}
names = new string[] { "电鳗", "吞噬鲲", "玲珑宝塔", "聚宝盆", "金龙", "神龙转盘", "炸弹蟹", "青龙", "蟠桃树", "激光蟹", "钻头蟹", "荧光水母", "远古龙龟", "深海灯笼鱼", "深渊鳄鱼", "禄存星君", "苍穹之主", "雷霆之主", "人鱼公主", "霸王蟹", "哥斯拉" };
killWeight = new int[] { 57, 56, 21, 21, 33, 25, 54, 50, 17, 54, 54, 50, 50, 42, 50, 18, 10, 20, 8, 50, 20 };
pathList = new List>() {
new List {1,9,41 },
new List {1,2 },
new List {1,2,3 },
new List {1,2 },
new List (),
new List {1,2,3 },
new List { 3,7,17},
new List (),
new List { 1,2,3 },
new List { 19,24,26 },
new List { 32,40,42 },
new List { 1,2 },
new List { 1,2 },
new List { 1,2 },
new List { 1,2 },
new List { 1,2,3 },
new List (),
new List (),
new List (),
new List { 1,2,3 },
new List (),
};
var briefs = new string[] {
"发出闪电攻击附近的鱼",
"其巨大的身体可以吞噬一切",
"传说中天界重宝,拥有浩大无穷之力,据说能降伏一切妖魔鬼怪。",
"含有大量宝物,并且会不断变大,价值连城",
"传说中的神兽,象征着吉祥和尊贵,可上天入海,见首不见尾。捕获后最高可获得500倍奖励。",
"多重元宝转盘",
"背着奇怪装置的半机械螃蟹,捕获后可触发全屏炸弹攻击",
"传说中的神龙,全身凝聚雷电的力量,拥有惊人的破坏力。被捕获后将触发双龙戏珠,雷动九天攻击全场。",
"先天王水蟠桃树,九千年一熟,食用后可与日月同庚。",
"背着奇怪装置的半机械螃蟹,捕获后可发射强力激光攻击",
"背着奇怪装置的半机械螃蟹,捕获后可发射弹跳钻头攻击",
"散发着荧光变异水母",
"远古之初,有巨龟如巍峨山峦,身披混沌火焰",
"头悬幽光灯笼,利齿倒钩如囚笼",
"冰封巨鳄,被封印在深渊之中",
"主掌功名利禄的星神其星光辉耀间似蕴含着世间福禄运数的神秘力量。",
"以无上的力量盘踞于苍穹之上,掌控着苍穹的风云变幻。",
"周身环绕紫色雷霆,一次龙吟,都能引发天地轰鸣,雷霆呼啸",
"幽蓝海底的公主,舞姿曼妙,鱼群常伴随它的海螺声出现。",
"蟹中之王,喜欢金银珠宝",
"身躯如山岳般巍峨,每一步踏出都让大地为之颤抖,喷射出的射线足以燃尽一切"
};
for (int i = 0; i < names.Count(); i++)
{
id++;
bool isBossOrSpecialBoss = true;
if (names[i] == "炸弹蟹" || names[i] == "钻头蟹" )
{
if (names[i] == "炸弹蟹") isBossOrSpecialBoss = true;
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishBrief = briefs[i], FishScore = 1, FishType = FishTypeEnum.特殊鱼, KillWeight = killWeight[i], PathList = pathList[i] });
}
else if (names[i] == "苍穹之主")
{
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishBrief = briefs[i], FishScore = 200, FishType = FishTypeEnum.特殊Boss, KillWeight = killWeight[i], PathList = pathList[i] });
}
else if (names[i] == "雷霆之主")
{
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishBrief = briefs[i], FishScore = 400, FishType = FishTypeEnum.特殊Boss, KillWeight = killWeight[i], PathList = pathList[i] });
}
else if (names[i] == "人鱼公主")
{
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishBrief = briefs[i], FishScore = 200, FishType = FishTypeEnum.特殊Boss, KillWeight = killWeight[i], PathList = pathList[i] });
}
else if (names[i] == "哥斯拉")
{
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishBrief = briefs[i], FishScore = 500, FishType = FishTypeEnum.特殊Boss, KillWeight = killWeight[i], PathList = pathList[i] });
}
else if (names[i] == "青龙"|| names[i] == "聚宝盆")
{
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishBrief = briefs[i], FishScore = 100, FishType = FishTypeEnum.Boss鱼, KillWeight = killWeight[i], PathList = pathList[i] });
}
else {
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishBrief = briefs[i], FishScore = 1, FishType = FishTypeEnum.Boss鱼, KillWeight = killWeight[i], PathList = pathList[i] });
}
var fishTimes = isBossOrSpecialBoss ? 30 : 10;
if (id <= 11027)
{
roomFishConfigs.RoomFishLevelList.Add(new RoomFishLevelConfig() { RoomLevel = 1, Type = 1, FishNumber = id.ToString(), MaxCount = 1, FishFrequency = 30, FishWeight = 1, Times = fishTimes });
}
if (i <= 11035 && id <= 11041)
{
roomFishConfigs.RoomFishLevelList.Add(new RoomFishLevelConfig() { RoomLevel = 2, Type = 1, FishNumber = id.ToString(), MaxCount = 1, FishFrequency = 30, FishWeight = 1, Times = fishTimes });
}
roomFishConfigs.RoomFishLevelList.Add(new RoomFishLevelConfig() { RoomLevel = 3, Type = 1, FishNumber = id.ToString(), MaxCount = 1, FishFrequency = 30, FishWeight = 1, Times = fishTimes });
}
for (int rl = 1; rl <= 3; rl++)
{
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = rl, Type = 1, FishType = FishTypeEnum.普通鱼,
FirstFishCountRange = new List { 20, 30 },
TimeRange = new List { 20, 20 },
CountRange = new List { 20, 30 },
MaxCountRange = new List { 20, 30 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = rl, Type = 1, FishType = FishTypeEnum.黄金鱼,
FirstFishCountRange = new List { 2, 3 },
TimeRange = new List { 15, 20 },
CountRange = new List { 2, 3 },
MaxCountRange = new List { 2, 3 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = rl, Type = 1, FishType = FishTypeEnum.Boss鱼,
FirstFishCountRange = new List { 2, 3 },
TimeRange = new List { 30, 30 },
CountRange = new List { 2, 3 },
MaxCountRange = new List { 2, 3 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = rl, Type = 1, FishType = FishTypeEnum.特殊鱼,
FirstFishCountRange = new List { 1, 2 },
TimeRange = new List { 30, 30 },
CountRange = new List { 1, 2 },
MaxCountRange = new List { 1, 2 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = rl, Type = 1, FishType = FishTypeEnum.特殊Boss,
FirstFishCountRange = new List { 0, 0 },
TimeRange = new List { 25, 30 },
CountRange = new List { 1, 1 },
MaxCountRange = new List { 1, 1 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = rl, Type = 2, FishType = FishTypeEnum.普通鱼,
FirstFishCountRange = new List { 1, 1 },
TimeRange = new List { 20, 20 },
CountRange = new List { 1, 1 },
MaxCountRange = new List { 1, 1 }
});
}
config.RoomFishConfigs.Add(roomFishConfigs);
config.RoomConfigs.Add(new RoomConfig() { RoomNumber = "20011", RoomName = "初级场", GameType = GameTypeEnum.风雷之渊, RoomLevel = 1, RoomPartitionNum = 4, RoomCount = 100, RoomGoldLimit = 100000, CannonMultipleList = new List { 1000, 2000, 3000, 5000, 6000, 7000, 8000, 9000, 10000, 20000 } });
config.RoomConfigs.Add(new RoomConfig() { RoomNumber = "20012", RoomName = "中级场", GameType = GameTypeEnum.风雷之渊, RoomLevel = 2, RoomPartitionNum = 4, RoomCount = 100, RoomGoldLimit = 1000000, CannonMultipleList = new List { 100, 200, 300, 500, 600, 700, 800, 900, 1000, 2000 } });
config.RoomConfigs.Add(new RoomConfig() { RoomNumber = "20013", RoomName = "高级场", GameType = GameTypeEnum.风雷之渊, RoomLevel = 3, RoomPartitionNum = 4, RoomCount = 100, RoomGoldLimit = 2000000, CannonMultipleList = new List { 2000, 3000, 5000, 6000, 7000, 8000, 9000, 10000, 20000, 50000 } });
roomFishConfigs = new RoomFishConfig() { GameType = GameTypeEnum.永夜尸城 };
id = 15000;
string[] normalNames = new string[]
{
"普通丧尸1", "医生丧尸", "普通丧尸2", "普通丧尸3", "普通丧尸4", "普通丧尸5", "普通丧尸6", "普通丧尸7",
"骷髅1", "骷髅2", "骷髅3", "爆炎丧尸", "熔岩丧尸", "暗影骷髅", "紫晶魔物", "女仆丧尸", "老年丧尸",
"红巾丧尸", "女战士丧尸", "机甲丧尸", "烈焰丧尸", "灰皮丧尸", "霜冻女妖", "僵尸狼", "绿皮肥丧尸",
"肥肉巨怪", "阿凡达僵尸", "贝比僵尸", "蝙蝠侠僵尸", "超人僵尸", "厨师僵尸", "刺客僵尸", "导游僵尸",
"防爆僵尸", "橄榄球僵尸", "功夫僵尸", "古惑仔僵尸", "黑帮倭瓜僵尸", "黑衣人僵尸", "葫芦娃僵尸",
"加勒比僵尸", "街头霸王僵尸", "酒鬼僵尸", "救生员僵尸", "科利僵尸", "科学狂人僵尸", "矿工僵尸",
"篮球僵尸", "劳拉僵尸", "林克僵尸", "摩斯族僵尸", "牛仔僵尸", "胖虎僵尸", "清朝僵尸", "容颜炮手僵尸",
"蛇反女僵尸", "史瑞克僵尸", "铁桶僵尸", "铁血战士僵尸", "迈克尔僵尸", "小丑僵尸", "教师僵尸",
"野人僵尸", "荧光棒僵尸", "杂耍僵尸", "学生僵尸", "张起灵僵尸", "终结者僵尸"
};
string[] normalBriefs = new string[]
{
"人类感染基础形态,行动迟缓,靠数量压制",
"医生感染变异,可投掷医疗工具攻击",
"人类感染基础形态,行动迟缓,靠数量压制",
"人类感染基础形态,行动迟缓,靠数量压制",
"人类感染基础形态,行动迟缓,靠数量压制",
"人类感染基础形态,行动迟缓,靠数量压制",
"人类感染基础形态,行动迟缓,靠数量压制",
"人类感染基础形态,行动迟缓,靠数量压制",
"人类骸骨与病毒结合,行动灵活,可群体冲锋",
"人类骸骨与病毒结合,行动灵活,可群体冲锋",
"人类骸骨与病毒结合,行动灵活,可群体冲锋",
"体内积攒爆炎能量,自爆可对范围目标造成高额伤害",
"火山区域变异体,躯体流淌熔岩,攻击附灼烧且生命力顽强",
"暗影能量凝聚而成,可穿梭阴影突袭,攻击附暗影debuff",
"被紫晶能量侵蚀,可操控晶刺攻击,防御较强",
"曾为女仆,保留人类动作习惯,可投掷清洁工具攻击",
"老年人感染变异,行动缓慢但韧性极强,擅长近身缠斗",
"头戴红巾,攻击欲望强烈,主动冲向目标撕咬",
"曾为战士,保留战斗技巧,近身格斗能力出色",
"士兵感染后与机甲融合,装甲防御强,可发射腐蚀弹",
"被火焰感染,周身带火,攻击附灼烧,行动迅猛",
"人类感染早期形态,行动迟缓但耐力强,擅长近身撕咬",
"寒冷区域亡灵,可释放寒气减速目标,擅长远程骚扰",
"野狼感染变异,行动敏捷,擅长追踪突袭",
"肥胖人类感染变异,绿皮肉瘤可喷吐毒素,生命力顽强。",
"高热量变异丧尸,行动缓慢但撞击冲击力强,脓疱破裂会腐蚀目标。",
"融合阿凡达奇幻风格,外形或能力带有阿凡达特征",
"走可爱幼态风格的僵尸",
"结合蝙蝠侠元素,可能保留其标志性装备或能力",
"融合超人设定,大概率拥有超强力量、飞行等超能力",
"职业为厨师,可能带有厨房相关道具或技能",
"具备刺客属性,擅长隐匿、刺杀,行动敏捷",
"以导游为职业,行为模式偏向引导、讲解",
"具备防爆相关能力或装备,防御力较强",
"以橄榄球运动员为原型,拥有强壮体魄和冲撞能力",
"精通功夫,近战能力强劲",
"融合古惑仔帮派风格,带有江湖气息和团队作战属性",
"结合黑帮元素与倭瓜外形,有黑帮背景",
"身着黑衣,具备神秘、隐匿特质",
"以葫芦娃为原型,可能保留其色彩特征或部分能力",
"带有加勒比海盗风格,和海洋、海盗相关",
"融合街头霸王格斗元素,擅长各类格斗技巧",
"嗜酒,行为可能受酒精影响,或有酒类相关技能",
"职业为救生员,具备水上相关能力和装备",
"小众原创类僵尸角色,设定信息较少",
"拥有疯狂科学家特质,可能进行邪恶实验",
"以矿工为职业,拥有挖掘、耐力相关能力",
"以篮球运动员为原型,拥有出色跳跃和投篮能力",
"以《古墓丽影》劳拉为原型,擅长探险和格斗",
"以《塞尔达传说》林克为原型,保留其冒险和战斗能力",
"以摩斯族为原型,拥有独特种族能力和外形",
"带有西部牛仔风格,擅长枪械和马术",
"以《哆啦A梦》胖虎为原型,拥有强壮体魄和高音量攻击",
"以清朝人物为原型,带有古代服饰和武器特征",
"以炮手为职业,擅长远程炮击攻击",
"带有蛇类特征的女性僵尸,拥有蛇类相关能力和外形",
"以《史瑞克》角色为原型,拥有绿色皮肤和强壮体魄",
"以铁桶为装备或外形特征,防御力极强",
"融合铁血战士元素,擅长潜行和各类外星武器使用",
"以迈克尔·杰克逊为原型,带有舞蹈和音乐相关特质",
"带有小丑外形和特质,行为诡异,擅长制造混乱",
"职业为教师,可能带有教育相关道具和技能",
"类似野人,拥有原始力量和野性特质",
"带有荧光棒元素,可能在黑暗环境发光或拥有光系技能",
"擅长杂耍,行动灵活,能使用杂耍道具攻击",
"以学生为原型,带有书包、文具等学生相关道具",
"以《盗墓笔记》张起灵为原型,拥有麒麟血和超强战斗能力",
"融合终结者元素,拥有超强自愈能力和战斗能力"
};
int[] normalScores = new int[]
{
2,2,2,2,2,2,2,2,2,2,2,
3,3,
4,4,
5,5,
6,6,
7,7,
8,8,8,
10,
12,
15,15,15,15,
18,18,18,
20,20,
25,25,25,25,25,25,25,25,
25,
30,30,30,30,30,30,30,30,30,
40,40,40,40,40,40,40,40,40,
45,45,45,45,45,45
};
int[] normalWeights = new int[]
{
// 15001-15011 (weight=5000)
5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,
// 15012-15013 (3333)
3333,3333,
// 15014-15015 (2500)
2500,2500,
// 15016-15017 (2000)
2000,2000,
// 15018-15019 (1666)
1666,1666,
// 15020-15021 (1428)
1428,1428,
// 15022-15024 (1250)
1250,1250,1250,
// 15025 (1000)
1000,
// 15026 (833)
833,
// 15027-15030 (666)
666,666,666,666,
// 15031-15033 (555)
555,555,555,
// 15034-15035 (500)
500,500,
// 15036-15043 (400)
400,400,400,400,400,400,400,400,
400,
// 15045-15053 (333)
333,333,333,333,333,333,333,333,333,
// 15054-15062 (250)
250,250,250,250,250,250,250,250,250,
// 15063-15068 (222)
222,222,222,222,222,222
};
for (int i = 0; i < normalNames.Length; i++)
{
id++;
config.FishTypeConfigs.Add(new FishTypeConfig()
{
FishNumber = id.ToString(),
FishName = normalNames[i],
FishBrief = normalBriefs[i],
FishScore = normalScores[i],
FishType = FishTypeEnum.普通鱼,
KillWeight = normalWeights[i],
PathList = new List { 1, 2, 3, 4, 5, 6, 7, 8 }
});
roomFishConfigs.NormalFishList.Add(new RoomFishDetailConfig()
{
Type = 1,
FishNumber = id.ToString(),
MaxCount = 1,
FishFrequency = 5,
FishWeight = 40,
Times = 10
});
}
string[] goldNames = new string[] { "骸骨战狼", "熔岩骷髅怪", "机械骷髅怪", "怨灵骷髅群", "多头骷髅怪" };
string[] goldBriefs = new string[]
{
"古狼骸骨+丧尸病毒诞生,嗅觉敏锐,行动迅猛,擅长突袭追踪。",
"火山附近亡灵,躯体流熔岩,攻击附灼烧效果,生命力顽强。",
"机械残骸与骷髅融合,机械臂可夹碎金属,擅长破坏防御工事。",
"冤死灵魂凝聚而成,群体冲锋压制目标,数量多难彻底消灭。",
"多骷髅头颅拼接而成,可同时攻击多个目标,附带寄生虫啃食效果。"
};
int[] goldScores = new int[] { 100, 100, 100, 100, 100 };
int[] goldWeights = new int[] { 100, 100, 100, 100, 100 };
for (int i = 0; i < goldNames.Length; i++)
{
id++;
config.FishTypeConfigs.Add(new FishTypeConfig()
{
FishNumber = id.ToString(),
FishName = goldNames[i],
FishBrief = goldBriefs[i],
FishScore = goldScores[i],
FishType = FishTypeEnum.黄金鱼,
KillWeight = goldWeights[i],
PathList = new List { 1, 2, 3, 4, 5, 6, 7, 8 }
});
roomFishConfigs.NormalFishList.Add(new RoomFishDetailConfig()
{
Type = 1,
FishNumber = id.ToString(),
MaxCount = 1,
FishFrequency = 5,
FishWeight = 40,
Times = 10
});
}
string[] specialNames = new string[]
{
"摇滚僵尸", "死神僵尸", "忍者神龟僵尸", "犬夜叉僵尸", "魔法师僵尸", "美国队长僵尸",
"路飞僵尸", "克劳德僵尸", "金刚狼僵尸", "弗兰肯斯坦", "飞行僵尸", "宝骏僵尸",
"567僵尸", "腐肉巨魔", "食人花丧尸", "坦克丧尸"
};
string[] specialBriefs = new string[]
{
"带有摇滚风格,拥有音乐相关能力和狂暴特质",
"融合死神元素,带有镰刀等标志性武器和死亡相关特质",
"融合忍者神龟元素,擅长忍术和各类武器使用",
"以《犬夜叉》角色为原型,保留其半妖特质和能力",
"具备魔法能力,能施展各类魔法攻击",
"融合美国队长元素,拥有超强力量和盾牌装备",
"以《海贼王》路飞为原型,拥有橡胶果实能力",
"以《最终幻想7》克劳德为原型,保留其战斗风格",
"结合金刚狼设定,拥有自愈能力和钢爪",
"源自玛丽·雪莱小说的经典人造人僵尸,是科学伦理探讨的标志性角色",
"拥有飞行能力,行动范围广,攻击更具突然性",
"以汽车品牌宝骏为原型的趣味拟人化僵尸",
"小众原创类僵尸角色,设定信息较少",
"人尸与腐植异变融合,行动迟缓但耐力极强,靠近身撕咬攻击。",
"变异食人花与丧尸躯体结合,靠巨花獠牙捕猎,以气味引诱目标。",
"士兵尸身与坦克残骸融合,装甲为天然防御,炮管可发射腐蚀弹。"
};
int[] specialScores = new int[] { 120, 120, 120, 120, 150, 150, 150, 150, 200, 200, 200, 200, 200, 250, 250, 250 };
int[] specialWeights = new int[] { 83, 83, 83, 83, 66, 66, 66, 66, 50, 50, 50, 50, 50, 40, 40, 40 };
for (int i = 0; i < specialNames.Length; i++)
{
id++;
config.FishTypeConfigs.Add(new FishTypeConfig()
{
FishNumber = id.ToString(),
FishName = specialNames[i],
FishBrief = specialBriefs[i],
FishScore = specialScores[i],
FishType = FishTypeEnum.特殊鱼,
KillWeight = specialWeights[i],
PathList = new List { 1, 2, 3, 4, 5, 6, 7, 8 }
});
roomFishConfigs.NormalFishList.Add(new RoomFishDetailConfig()
{
Type = 1,
FishNumber = id.ToString(),
MaxCount = 1,
FishFrequency = 5,
FishWeight = 40,
Times = 10
});
}
string[] bossNames = new string[]
{
"战神僵尸", "阴阳师僵尸", "雷神僵尸", "斯芬克斯僵尸", "大力水手僵尸",
"礼物车僵尸", "骑士僵尸", "阿拉丁僵尸", "骷髅王僵尸"
};
string[] bossBriefs = new string[]
{
"具备战神属性,拥有超强力量和战斗技巧",
"融合阴阳师元素,擅长式神召唤和阴阳法术",
"结合雷神元素,拥有雷电相关能力和武器",
"以斯芬克斯为原型,拥有谜题和智慧相关能力",
"以大力水手为原型,拥有超强力量和菠菜相关技能",
"和礼物车相关,可能带有运输、投掷类技能",
"具备骑士属性,身披盔甲,擅长骑士剑术",
"以《阿拉丁》角色为原型,和神灯、魔法相关",
"僵尸群体中的强力领导者"
};
int[] bossScores = new int[] { 1, 1, 1, 1, 1, 1, 1, 1, 1 };
int[] bossWeights = new int[] { 55, 52, 43, 41, 32, 20, 20, 20, 20 };
for (int i = 0; i < bossNames.Length; i++)
{
id++;
config.FishTypeConfigs.Add(new FishTypeConfig()
{
FishNumber = id.ToString(),
FishName = bossNames[i],
FishBrief = bossBriefs[i],
FishScore = bossScores[i],
FishType = FishTypeEnum.Boss鱼,
KillWeight = bossWeights[i],
PathList = new List { 1, 2, 3, 4, 5, 6, 7, 8 }
});
roomFishConfigs.RoomFishLevelList.Add(new RoomFishLevelConfig()
{
RoomLevel = i % 3 + 1,
Type = 1,
FishNumber = id.ToString(),
MaxCount = 1,
FishFrequency = 30,
FishWeight = 1,
Times = 10
});
}
id++; // 15099
config.FishTypeConfigs.Add(new FishTypeConfig()
{
FishNumber = id.ToString(),
FishName = "博士僵尸",
FishBrief = "以博士为职业,拥有高智商和科技相关能力",
FishScore = 1,
FishType = FishTypeEnum.Boss鱼,
KillWeight = 16,
PathList = new List { 1, 2, 3, 4, 5, 6, 7, 8 }
});
roomFishConfigs.RoomFishLevelList.Add(new RoomFishLevelConfig()
{
RoomLevel = 3,
Type = 1,
FishNumber = id.ToString(),
MaxCount = 1,
FishFrequency = 60,
FishWeight = 1,
Times = 10
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 1,
Type = 1,
FishType = FishTypeEnum.普通鱼,
FirstFishCountRange = new List { 20, 30 },
TimeRange = new List { 3, 10 },
CountRange = new List { 20, 30 },
MaxCountRange = new List { 20, 30 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 1,
Type = 1,
FishType = FishTypeEnum.黄金鱼,
FirstFishCountRange = new List { 2, 3 },
TimeRange = new List { 15, 20 },
CountRange = new List { 2, 3 },
MaxCountRange = new List { 1, 1 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 1,
Type = 1,
FishType = FishTypeEnum.Boss鱼,
FirstFishCountRange = new List { 2, 3 },
TimeRange = new List { 30, 30 },
CountRange = new List { 2, 3 },
MaxCountRange = new List { 1, 1 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 1,
Type = 1,
FishType = FishTypeEnum.特殊鱼,
FirstFishCountRange = new List { 1, 2 },
TimeRange = new List { 30, 30 },
CountRange = new List { 1, 2 },
MaxCountRange = new List { 1, 2 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 1,
Type = 1,
FishType = FishTypeEnum.特殊Boss,
FirstFishCountRange = new List { 1, 1 },
TimeRange = new List { 30, 30 },
CountRange = new List { 1, 1 },
MaxCountRange = new List { 1, 1 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 1,
Type = 2,
FishType = FishTypeEnum.普通鱼,
FirstFishCountRange = new List { 5, 10 },
TimeRange = new List { 15, 20 },
CountRange = new List { 5, 10 },
MaxCountRange = new List { 5, 10 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 2,
Type = 1,
FishType = FishTypeEnum.普通鱼,
FirstFishCountRange = new List { 20, 30 },
TimeRange = new List { 3, 10 },
CountRange = new List { 20, 30 },
MaxCountRange = new List { 20, 30 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 2,
Type = 1,
FishType = FishTypeEnum.黄金鱼,
FirstFishCountRange = new List { 2, 3 },
TimeRange = new List { 15, 20 },
CountRange = new List { 2, 3 },
MaxCountRange = new List { 1, 1 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 2,
Type = 1,
FishType = FishTypeEnum.Boss鱼,
FirstFishCountRange = new List { 2, 3 },
TimeRange = new List { 30, 30 },
CountRange = new List { 2, 3 },
MaxCountRange = new List { 2, 3 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 2,
Type = 1,
FishType = FishTypeEnum.特殊鱼,
FirstFishCountRange = new List { 1, 2 },
TimeRange = new List { 30, 30 },
CountRange = new List { 1, 2 },
MaxCountRange = new List { 1, 2 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 2,
Type = 1,
FishType = FishTypeEnum.特殊Boss,
FirstFishCountRange = new List { 1, 1 },
TimeRange = new List { 30, 30 },
CountRange = new List { 1, 1 },
MaxCountRange = new List { 1, 1 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 2,
Type = 2,
FishType = FishTypeEnum.普通鱼,
FirstFishCountRange = new List { 5, 10 },
TimeRange = new List { 15, 20 },
CountRange = new List { 5, 10 },
MaxCountRange = new List { 5, 10 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 3,
Type = 1,
FishType = FishTypeEnum.普通鱼,
FirstFishCountRange = new List { 20, 30 },
TimeRange = new List { 3, 10 },
CountRange = new List { 20, 30 },
MaxCountRange = new List { 20, 30 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 3,
Type = 1,
FishType = FishTypeEnum.黄金鱼,
FirstFishCountRange = new List { 2, 3 },
TimeRange = new List { 15, 20 },
CountRange = new List { 2, 3 },
MaxCountRange = new List { 2, 3 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 3,
Type = 1,
FishType = FishTypeEnum.Boss鱼,
FirstFishCountRange = new List { 2, 3 },
TimeRange = new List { 30, 30 },
CountRange = new List { 2, 3 },
MaxCountRange = new List { 2, 3 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 3,
Type = 1,
FishType = FishTypeEnum.特殊鱼,
FirstFishCountRange = new List { 1, 2 },
TimeRange = new List { 30, 30 },
CountRange = new List { 1, 2 },
MaxCountRange = new List { 1, 2 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 3,
Type = 1,
FishType = FishTypeEnum.特殊Boss,
FirstFishCountRange = new List { 1, 1 },
TimeRange = new List { 30, 30 },
CountRange = new List { 1, 1 },
MaxCountRange = new List { 1, 1 }
});
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = 3,
Type = 2,
FishType = FishTypeEnum.普通鱼,
FirstFishCountRange = new List { 5, 10 },
TimeRange = new List { 15, 20 },
CountRange = new List { 5, 10 },
MaxCountRange = new List { 5, 10 }
});
config.RoomFishConfigs.Add(roomFishConfigs);
config.RoomConfigs.Add(new RoomConfig() { RoomNumber = "20021", RoomName = "初级场", GameType = GameTypeEnum.永夜尸城, RoomLevel = 1, RoomPartitionNum = 4, RoomCount = 100, RoomGoldLimit = 100000, CannonMultipleList = new List { 1000, 2000, 3000, 5000, 6000, 7000, 8000, 9000, 10000, 20000 } });
config.RoomConfigs.Add(new RoomConfig() { RoomNumber = "20022", RoomName = "中级场", GameType = GameTypeEnum.永夜尸城, RoomLevel = 2, RoomPartitionNum = 4, RoomCount = 100, RoomGoldLimit = 1000000, CannonMultipleList = new List { 100, 200, 300, 500, 600, 700, 800, 900, 1000, 2000 } });
config.RoomConfigs.Add(new RoomConfig() { RoomNumber = "20023", RoomName = "高级场", GameType = GameTypeEnum.永夜尸城, RoomLevel = 3, RoomPartitionNum = 4, RoomCount = 100, RoomGoldLimit = 2000000, CannonMultipleList = new List { 2000, 3000, 5000, 6000, 7000, 8000, 9000, 10000, 20000, 50000 } });
roomFishConfigs = new RoomFishConfig() { GameType = GameTypeEnum.黑神话悟空 };
id = 13000;
names = new string[] { "小蓝鱼", "小黄鱼", "小飞鱼", "小丑鱼", "神仙鱼", "灯笼鱼", "孔雀鱼", "小龙虾", "狮子鱼", "水丹", "刺豚", "海龟", "蝙蝠鱼", "海豚", "尖嘴鲨", "双髻鲨", "大白鲨" };
killWeight = new int[] { 5000, 3333, 2000, 2000, 1666, 1428, 1250, 1111, 1000, 833, 666, 500, 400, 333, 250, 200, 166 };
pathList = new List>() {
new List { 1,2,3,4,5,6,7,8 },
new List { 9,10,11,12,13,14,15,16 },
new List { 17,18,19,20,21,22,23,24 },
new List { 25,26,27,28,29,30,31,32 },
new List { 33,34,35,36,37,38,39,40 },
new List { 41,42,43,44,45,46,47,48 },
new List { 49,50,51,52,53,54,55,56 },
new List { 57,58,59,60,61,62,63,64 },
new List { 65,66,67,68,69,70,71,72 },
new List { 73,74,75,76,77,78,79,80 },
new List { 81,82,83,84,85,86,87,88 },
new List { 89,90,91,92,93,94,95,96 },
new List { 97,98,99,100,101,102,103,104 },
new List { 105,106,107,108,109,110,111,112 },
new List { 113,114,115,116,117,118,119,120 },
new List { 121,122,123,124,125,126,127,128 },
new List { 129,130,131,132,133,134,135,136 }
};
briefs = new string[] {
"小黄刺鱼通体黄色,经常成群出没,打击难度比较小。",
"因有两只硕大无比的眼睛而得名。此鱼生性胆小。",
"小丑鱼因为脸上有一条或两条白色条纹,好似京剧中的丑角而得名,是一种热带咸水鱼。",
"热带蓝鱼常常被当做观赏鱼饲养,种类极多,以海草及石灰质中的浮游生物为食。",
"乌龟是现存古老的爬行动物。特征是身上长有非常坚固的甲壳,受击时可以把头、尾及四肢缩回龟壳内。",
"身上的纹理像彩虹一般的鱼,分值还不错,加油捕获吧。",
"剑鱼的攻击力特强,它那骨质利剑非常坚硬,而且还是游泳冠军记录的保持着。",
"大家别急,游慢点....",
"蝴蝶鱼一般个体较小,可以在珊瑚丛中灵巧地穿梭。体色大部鲜艳美丽。",
"我想游的再快点....",
"生性胆小的家伙,一有风吹草动,马上溜之大吉。",
"河豚的体型浑圆,具有膨胀身体的能力,受到威胁时,能快速吸入水或者空气,再短时间内膨胀数倍大小,吓退掠食者。",
"灯笼鱼的背上长着一种发光器,每当它游泳的时候,发光器就像一盏玲珑的小灯笼,在深海中照出一片亮光来。",
"巨大小丑是小丑鱼变异来的,体型要大很多,捕获难度较大。",
"魔鬼鱼身体扁平似蝙蝠,胸鳍宽大,由吻端延伸到细长的尾根底部,身子扁平,尾巴细长。",
"远洋型虎鲸身长可达8-10米,成年后体重9顿左右。以鲨鱼为主要食物,是当之无愧的海洋霸主。",
"我保证你不愿意看见我的微笑!嘿嘿...."};
scores = new int[] { 2, 3, 5, 5, 6, 7, 8, 9, 10, 12, 15, 20, 25, 30, 40, 50, 60, };
for (int i = 0; i < names.Count(); i++)
{
id++;
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishScore = scores[i], FishBrief = briefs[i], FishType = FishTypeEnum.普通鱼, KillWeight = killWeight[i], PathList = pathList[i].ToList() });
roomFishConfigs.NormalFishList.Add(new RoomFishDetailConfig() { Type = 1, FishNumber = id.ToString(), MaxCount = 1, FishFrequency = 5, FishWeight = 40, Times = 20 });
}
names = new string[] { "鲸鱼", "奖金幽灵水母", "奖金魔鬼鱼", "奖金鲨鱼", "奖金双髻鲨", "奖金大海龟" };
killWeight = new int[] { 83, 76, 66, 62, 55, 50 };
briefs = new string[] { "黄金珊瑚鱼通体黄金,是珊瑚鱼中最高级的个体。", "黄金河豚浑身金灿灿,价值连城,但是数量极少。", "一只移动的聚宝盆,虽然移动缓慢,但捕获难度超高", "这只金灿灿的黄金灯笼鱼极其少见,捕获它能获得很多奖励。", "黄金虎鲸是虎鲸的变异群种,不是一般的难打。可是一旦渔获,会很惊!", "鲨的变种鱼之一,它的一切资料还隐藏在迷雾中……" };
scores = new int[] { 120, 130, 150, 160, 180, 200 };
pathList = new List>() {
new List { 137,138,139,140,141,142,143,144 },
new List { 145,146,147,148,149,150,151,152 },
new List { 153,154,155,156,157,158,159,160 },
new List { 161,162,163,164,165,166,167,168 },
new List { 169,170,171,172,173,174,175,176 },
new List { 177,178,179,180,181,182,183,184 }
};
for (int i = 0; i < names.Count(); i++)
{
id++;
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishScore = scores[i], FishBrief = briefs[i], FishType = FishTypeEnum.黄金鱼, KillWeight = killWeight[i], PathList = pathList[i].ToList() });
roomFishConfigs.NormalFishList.Add(new RoomFishDetailConfig() { Type = 1, FishNumber = id.ToString(), MaxCount = 1, FishFrequency = 5, FishWeight = 40, Times = 25 });
}
names = new string[] { "大龙虾", "闪电鱼", "连环导弹", "九龙玉玺", "沙僧", "白骨精", "小白龙", "嫦娥", "孙悟空", "铁扇公主", "唐僧", "猪八戒", "烈焰巨龙", "宝船居蟹", "杨戬", "食神八戒", "齐天大圣" };
killWeight = new int[] { 55, 52, 52, 43, 41, 32, 33, 32, 20, 33, 20, 20, 20, 16, 15, 15, 12 };
briefs = new string[] {
"钻头蟹的钻头可贯穿全场,捕获它将让你所向披靡。",
"释放强力闪电,瞬间秒杀一定范围内的鱼。", "此炸弹威力无穷,民间赞颂它,\"炸药一响,黄金万两\"。", "据说可驭九龙之力,威压所致,万物皆惧!", "原为天界卷帘大将,手持玉帝所赐降妖宝杖,对唐僧忠心耿耿且实力超群。", "擅长变化,狡猾又通晓人弱点,多次试图接近唐僧,最终被孙悟空识破?", "本是西海龙王三太子,法力高强,贪食唐僧坐骑,被观音点化后变为白龙马。", "掌管月宫的广寒仙子,能以月神之力带来富贵和好运", "由仙石孕育而生,拜菩提老祖门下习得七十二变,后大闹龙宫取得如意金箍棒", "牛魔王妻子,持有法宝芭蕉扇,呼风唤雨,世人称之铁扇金仙", "如来佛祖座下金蝉子转世,一心向善,为取真经一路历经磨难", "曾为掌管天宫八万水军天蓬元帅,会天罡数三十六般变化,所持武器九齿钉耙~", "地心熔穴为巢,故极其罕见,在猎人黑市可谓价值连城!", "极具财运,搜罗过无数元宝宝藏,让人羡慕不已!", "三尖两刃刀横扫三界,天眼洞悉万物,哮天犬伴其左右,神威凛冽不容侵犯!", "让俺老猪看看盘子里装的是什么好吃的!", "齐天大圣孙悟空,火眼金睛识破一切妖魔鬼怪" };
pathList = new List>() {
new List { 185,186,187,188,189,190,191,192 },
new List { 193,194,195,196,197,198,199,200 },
new List { 201,202,203,204,205,206,207,208 },
new List { 1, 2, 3 },
new List { 1, 2, 3 },
new List { 1 },
new List { 1 },
new List { 1, 2, 3 },
new List { 1, 2, 3 },
new List { 1, 2, 3 },
new List { 1, 2, 3 },
new List { 1 },
new List { 1, 2 },
new List { 1, 2},
new List { 1, 2, 3 },
new List { 1, 2, 3 },
new List { 1, 2, 3 }
};
for (int i = 0; i < names.Count(); i++)
{
id++;
var fishPathList = pathList[i].ToList();
if (names[i] == "炸弹蟹" || names[i] == "闪电鱼" || names[i] == "钻头蟹")
{
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishBrief = briefs[i], FishScore = 1, FishType = FishTypeEnum.特殊鱼, KillWeight = killWeight[i], PathList = fishPathList });
}
else if (names[i] == "杨戬" || names[i] == "食神八戒" || names[i] == "齐天大圣")
{
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishBrief = briefs[i], FishScore = 1, FishType = FishTypeEnum.特殊Boss, KillWeight = killWeight[i], PathList = fishPathList });
}
else {
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishBrief = briefs[i], FishScore = 1, FishType = FishTypeEnum.Boss鱼, KillWeight = killWeight[i], PathList = fishPathList });
}
if (id <= 13035)
{
roomFishConfigs.RoomFishLevelList.Add(new RoomFishLevelConfig() { RoomLevel = 1, Type = 1, FishNumber = id.ToString(), MaxCount = 1, FishFrequency = 30, FishWeight = 1, Times = 30 });
}
if (i <= 13037)
{
roomFishConfigs.RoomFishLevelList.Add(new RoomFishLevelConfig() { RoomLevel = 2, Type = 1, FishNumber = id.ToString(), MaxCount = 1, FishFrequency = 30, FishWeight = 1, Times = 30 });
}
roomFishConfigs.RoomFishLevelList.Add(new RoomFishLevelConfig() { RoomLevel = 3, Type = 1, FishNumber = id.ToString(), MaxCount = 1, FishFrequency = 30, FishWeight = 1, Times = 30 });
}
void AddProb(int rl, int type, FishTypeEnum ft, int[] ff, int[] tm, int[] cnt, int[] max)
{
roomFishConfigs.RoomFishProbabilityList.Add(new RoomFishProbabilityConfig
{
RoomLevel = rl, Type = type, FishType = ft,
FirstFishCountRange = new List { ff[0], ff[1] },
TimeRange = new List { tm[0], tm[1] },
CountRange = new List { cnt[0], cnt[1] },
MaxCountRange = new List { max[0], max[1] }
});
}
for (int rl = 1; rl <= 3; rl++)
{
AddProb(rl, 1, FishTypeEnum.普通鱼, new[] { 5, 10 }, new[] { 5, 10 }, new[] { 5, 10 }, new[] { 5, 10 });
AddProb(rl, 1, FishTypeEnum.黄金鱼, new[] { 1, 2 }, new[] { 15, 20 }, new[] { 1, 2 }, new[] { 1, 2 });
AddProb(rl, 1, FishTypeEnum.Boss鱼, new[] { 1, 2 }, new[] { 30, 30 }, new[] { 1, 2 }, new[] { 1, 2 });
AddProb(rl, 1, FishTypeEnum.特殊Boss, new[] { 1, 2 }, new[] { 25, 30 }, new[] { 1, 2 }, new[] { 1, 2 });
AddProb(rl, 1, FishTypeEnum.特殊鱼, new[] { 1, 2 }, new[] { 30, 30 }, new[] { 1, 2 }, new[] { 2, 3 });
AddProb(rl, 2, FishTypeEnum.普通鱼, new[] { 3, 5 }, new[] { 5, 10 }, new[] { 5, 10 }, new[] { 5, 10 });
}
config.RoomConfigs.Add(new RoomConfig() { RoomNumber = "20051", RoomName = "初级场", GameType = GameTypeEnum.黑神话悟空, RoomLevel = 1, RoomPartitionNum = 4, RoomCount = 100, RoomGoldLimit = 100000, CannonMultipleList = new List { 1000, 2000, 3000, 5000, 6000, 7000, 8000, 9000, 10000, 20000 } });
config.RoomConfigs.Add(new RoomConfig() { RoomNumber = "20052", RoomName = "中级场", GameType = GameTypeEnum.黑神话悟空, RoomLevel = 2, RoomPartitionNum = 4, RoomCount = 100, RoomGoldLimit = 1000000, CannonMultipleList = new List { 100, 200, 300, 500, 600, 700, 800, 900, 1000, 2000 } });
config.RoomConfigs.Add(new RoomConfig() { RoomNumber = "20053", RoomName = "高级场", GameType = GameTypeEnum.黑神话悟空, RoomLevel = 3, RoomPartitionNum = 4, RoomCount = 100, RoomGoldLimit = 2000000, CannonMultipleList = new List { 2000, 3000, 5000, 6000, 7000, 8000, 9000, 10000, 20000, 50000 } });
config.FishArrayConfigs.Add(new FishArrayConfig() { FishArrayNumber = "31001", Name = "小蓝鱼顺序鱼阵", FishNumber = "13001", FishCount = 1, BossFishNumber = "", BoosCount = 0, ArrayNumber = "71001", ThresholdList = new List { 5, 10 } });
config.FishArrayConfigs.Add(new FishArrayConfig() { FishArrayNumber = "31002", Name = "小黄鱼顺序鱼阵", FishNumber = "13002", FishCount = 1, BossFishNumber = "", BoosCount = 0, ArrayNumber = "71002", ThresholdList = new List { 5, 10 } });
config.FishArrayConfigs.Add(new FishArrayConfig() { FishArrayNumber = "31003", Name = "小飞鱼顺序鱼阵", FishNumber = "13003", FishCount = 1, BossFishNumber = "", BoosCount = 0, ArrayNumber = "71003", ThresholdList = new List { 5, 10 } });
config.FishArrayConfigs.Add(new FishArrayConfig() { FishArrayNumber = "31004", Name = "小丑鱼顺序鱼阵", FishNumber = "13004", FishCount = 1, BossFishNumber = "", BoosCount = 0, ArrayNumber = "71004", ThresholdList = new List { 5, 10 } });
config.FishArrayConfigs.Add(new FishArrayConfig() { FishArrayNumber = "31005", Name = "神仙鱼顺序鱼阵", FishNumber = "13005", FishCount = 1, BossFishNumber = "", BoosCount = 0, ArrayNumber = "71005", ThresholdList = new List { 5, 10 } });
config.FishArrayConfigs.Add(new FishArrayConfig() { FishArrayNumber = "31006", Name = "灯笼鱼顺序鱼阵", FishNumber = "13006", FishCount = 1, BossFishNumber = "", BoosCount = 0, ArrayNumber = "71006", ThresholdList = new List { 5, 10 } });
config.FishArrayConfigs.Add(new FishArrayConfig() { FishArrayNumber = "31007", Name = "孔雀鱼顺序鱼阵", FishNumber = "13007", FishCount = 1, BossFishNumber = "", BoosCount = 0, ArrayNumber = "71007", ThresholdList = new List { 5, 10 } });
config.FishArrayConfigs.Add(new FishArrayConfig() { FishArrayNumber = "31008", Name = "小龙虾顺序鱼阵", FishNumber = "13008", FishCount = 1, BossFishNumber = "", BoosCount = 0, ArrayNumber = "71008", ThresholdList = new List { 5, 10 } });
config.FishArrayConfigs.Add(new FishArrayConfig() { FishArrayNumber = "31009", Name = "狮子鱼顺序鱼阵", FishNumber = "13009", FishCount = 1, BossFishNumber = "", BoosCount = 0, ArrayNumber = "71009", ThresholdList = new List { 5, 10 } });
config.FishArrayConfigs.Add(new FishArrayConfig() { FishArrayNumber = "31010", Name = "水母顺序鱼阵", FishNumber = "13010", FishCount = 1, BossFishNumber = "", BoosCount = 0, ArrayNumber = "71010", ThresholdList = new List { 5, 10 } });
config.FishArrayConfigs.Add(new FishArrayConfig() { FishArrayNumber = "31011", Name = "刺豚顺序鱼阵", FishNumber = "13011", FishCount = 1, BossFishNumber = "", BoosCount = 0, ArrayNumber = "71011", ThresholdList = new List { 5, 10 } });
config.FishArrayConfigs.Add(new FishArrayConfig() { FishArrayNumber = "31012", Name = "海龟顺序鱼阵", FishNumber = "13012", FishCount = 1, BossFishNumber = "", BoosCount = 0, ArrayNumber = "71012", ThresholdList = new List { 5, 10 } });
config.FishArrayConfigs.Add(new FishArrayConfig() { FishArrayNumber = "31013", Name = "蝙蝠鱼顺序鱼阵", FishNumber = "13013", FishCount = 1, BossFishNumber = "", BoosCount = 0, ArrayNumber = "71013", ThresholdList = new List { 5, 10 } });
foreach (var item in config.FishArrayConfigs.Where(x => Convert.ToInt32(x.FishArrayNumber) >= 31001 && Convert.ToInt32(x.FishArrayNumber) <= 31013))
{
roomFishConfigs.RoomFishLevelList.Add(new RoomFishLevelConfig() { RoomLevel = 1, Type = 2, FishNumber = item.FishArrayNumber, MaxCount = 1, FishFrequency = 100, FishWeight = 1, Times = 20 });
roomFishConfigs.RoomFishLevelList.Add(new RoomFishLevelConfig() { RoomLevel = 2, Type = 2, FishNumber = item.FishArrayNumber, MaxCount = 1, FishFrequency = 100, FishWeight = 1, Times = 20 });
roomFishConfigs.RoomFishLevelList.Add(new RoomFishLevelConfig() { RoomLevel = 3, Type = 2, FishNumber = item.FishArrayNumber, MaxCount = 1, FishFrequency = 100, FishWeight = 1, Times = 20 });
}
config.RoomFishConfigs.Add(roomFishConfigs);
config.RoomConfigs.Add(new RoomConfig() { RoomNumber = "20041", RoomName = "初级场", GameType = GameTypeEnum.星际迷航, RoomLevel = 1, RoomPartitionNum = 4, RoomCount = 100, RoomGoldLimit = 100000, CannonMultipleList = new List { 1000, 2000, 3000, 5000, 6000, 7000, 8000, 9000, 10000, 20000 } });
config.RoomConfigs.Add(new RoomConfig() { RoomNumber = "20042", RoomName = "中级场", GameType = GameTypeEnum.星际迷航, RoomLevel = 2, RoomPartitionNum = 4, RoomCount = 100, RoomGoldLimit = 1000000, CannonMultipleList = new List { 100, 200, 300, 500, 600, 700, 800, 900, 1000, 2000 } });
config.RoomConfigs.Add(new RoomConfig() { RoomNumber = "20043", RoomName = "高级场", GameType = GameTypeEnum.星际迷航, RoomLevel = 3, RoomPartitionNum = 4, RoomCount = 100, RoomGoldLimit = 2000000, CannonMultipleList = new List { 2000, 3000, 5000, 6000, 7000, 8000, 9000, 10000, 20000, 50000 } });
id = 12000;
roomFishConfigs = new RoomFishConfig() { GameType = GameTypeEnum.星际迷航 };
names = new string[] { "绿风", "蝎子", "黄蜂", "红刹", "白羽", "蔷薇", "雷霆", "星火", "紫虹", "赤日", "蓝鸟", "迷彩", "天鹰", "幻影", "嫣然", "赤鸦", "极寒", "烈焰", "双子天使" };
scores = new int[] { 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 18, 20, 30, 35, 50, 60, 70, 80, 100 };
killWeight = new int[] { 5000, 3333, 2500, 2000, 1666, 1428, 1250, 1111, 1000, 666, 555, 500, 333, 285, 200, 166, 142, 125, 100 };
for (int i = 0; i < names.Count(); i++)
{
id++;
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishScore = 3, FishType = FishTypeEnum.普通鱼, KillWeight = killWeight[i], PathList = new List() { 1, 2, 3, 4, 5, 6, 7, 8 } });
if (id >= 12010)
roomFishConfigs.NormalFishList.Add(new RoomFishDetailConfig() { Type = 1, FishNumber = id.ToString(), MaxCount = 1, FishFrequency = 5, FishWeight = 40, Times = 20 });
}
names = new string[] { "光环飞机F2", "光环飞机F1" };
for (int i = 0; i < names.Count(); i++)
{
id++;
config.FishTypeConfigs.Add(new FishTypeConfig() { FishNumber = id.ToString(), FishName = names[i], FishScore = 3, FishType = FishTypeEnum.特殊鱼, KillWeight = 500, PathList = new List() { 1, 2, 3, 4, 5, 6, 7, 8 } });
roomFishConfigs.NormalFishList.Add(new RoomFishDetailConfig() { Type = 1, FishNumber = id.ToString(), MaxCount = 1, FishFrequency = 5, FishWeight = 40, Times = 10 });
}
names = new string[] { "幸运飞碟", "小丑扑克", "黑洞飞船", "弹药箱", "爆裂金鲨", "女龙王", "机械蝎", "星际巡航", "破坏球", "幸运轮", "超能魔盒", "机甲雷霆", "烈焰风暴" };
killWeight = new int[] { 100, 500, 52, 500, 43, 20, 15, 66, 27, 18, 18, 16, 66 };
pathList = new List