添加探索地区(1)

This commit is contained in:
milimoe 2025-02-11 00:43:04 +08:00
parent 24084b4740
commit ee03383008
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
5 changed files with 103 additions and 32 deletions

View File

@ -31,19 +31,19 @@ namespace Oshima.FunGame.OshimaModules.Regions
if (Characters.Count > 0)
{
builder.AppendLine($"== 头目 ==");
builder.AppendLine(string.Join("", Characters.Select(o => o.Name)));
builder.AppendLine(string.Join("", Characters.Select(c => c.Name)));
}
if (Units.Count > 0)
{
builder.AppendLine($"== 生物 ==");
builder.AppendLine(string.Join("", Units.Select(o => o.Name)));
builder.AppendLine(string.Join("", Units.Select(u => u.Name)));
}
if (Crops.Count > 0)
{
builder.AppendLine($"== 作物 ==");
builder.AppendLine(string.Join("", Crops.Select(c => c.Name)));
builder.AppendLine(string.Join("", Crops.Select(i => i.Name + "" + i.Description + "\"" + i.BackgroundStory + "\"")));
}
builder.AppendLine($"探索难度:{CharacterSet.GetRarityTypeName(Difficulty)}");

View File

@ -11,6 +11,7 @@ namespace Oshima.FunGame.OshimaServers.Service
public const long CustomCharacterId = -1;
public const int ItemsPerPage1 = 6;
public const int ItemsPerPage2 = 10;
public const int ExploreTime = 2;
public static List<Character> Characters { get; } = [];
public static List<Skill> Skills { get; } = [];
public static List<Skill> PassiveSkills { get; } = [];
@ -19,6 +20,7 @@ namespace Oshima.FunGame.OshimaServers.Service
public static List<Item> Equipment { get; } = [];
public static List<Item> Items { get; } = [];
public static List<Item> DrawCardItems { get; } = [];
public static Dictionary<OshimaRegion, List<Item>> ExploreItems { get; } = [];
public static List<Skill> ItemSkills { get; } = [];
public static List<Item> AllItems { get; } = [];
public static List<Skill> AllSkills { get; } = [];
@ -374,23 +376,23 @@ namespace Oshima.FunGame.OshimaServers.Service
{
{
"星银警戒协议·弎级响应",
"星银合金守卫在悖论引擎周边暴走,形成包围核心区的杀戮矩阵,必须在三刻钟内解除警戒协议"
"星银合金守卫在悖论引擎周边暴走,形成包围核心区的杀戮矩阵,必须在三刻钟内解除警戒协议"
},
{
"音律囚笼突破作战",
"苏醒的旋律古龙释放出高频震波,将精灵们困在水晶共振牢笼中,需在下次地貌重组前切断声波共鸣节点"
"苏醒的旋律古龙释放出高频震波,将精灵们困在水晶共振牢笼中,需在下次地貌重组前切断声波共鸣节点"
},
{
"深渊火种收容危机",
"矿道底层的深渊火钻因元素污染进入链式裂变,引发全矿道魔能过载,立即部署熵减力场遏制反应"
"矿道底层的深渊火钻因元素污染进入链式裂变,引发全矿道魔能过载,立即部署熵减力场遏制反应"
},
{
"时霜逆流救援行动",
"科研小组被困在加速百倍的时间泡内,其肉体正以肉眼可见的速度衰老,必须校准哨塔时钟恢复时间流速"
"科研小组被困在加速百倍的时间泡内,其肉体正以肉眼可见的速度衰老,必须校准哨塔时钟恢复时间流速"
},
{
"镜像侵蚀净化指令",
"镜像守卫突破湖面屏障入侵现实维度,携带的认知病毒正在改写物理法则,启动银辉城防卫协议实施净化"
"镜像守卫突破湖面屏障入侵现实维度,携带的认知病毒正在改写物理法则,启动银辉城防卫协议实施净化"
},
{
"雷霆风暴紧急预警",
@ -458,83 +460,83 @@ namespace Oshima.FunGame.OshimaServers.Service
{
{
"月光萃取计划",
"在星银合金建筑的沟壑中采集 {0} 份液态月光(注意避开月光洪流的高潮时段/每夜丑时三刻)。"
"前往【银辉城】,在星银合金建筑的沟壑中采集 {0} 份液态月光(注意避开月光洪流的高潮时段/每夜丑时三刻)。"
},
{
"灵脉汁液采收行动",
"使用抗腐蚀容器收集 {0} 份瑟兰薇歌林海的荧蓝汁液(树木自卫系统激活时汁液会转化为神经毒素)。"
"使用抗腐蚀容器收集 {0} 份瑟兰薇歌林海的荧蓝汁液(树木自卫系统激活时汁液会转化为神经毒素)。"
},
{
"火钻精炼协议",
"在矿工灵魂烙印的指引下获取 {0} 颗深渊火钻(未烙印者触碰火钻将引发元素爆燃)。"
"在【赫菲斯托斯之喉】矿工灵魂烙印的指引下获取 {0} 颗深渊火钻(未烙印者触碰火钻将引发元素爆燃)。"
},
{
"时霜逆向工程",
"通过时间镜像收集 {0} 份不同历史断片的时霜药剂样本(注意时空回响对记忆的覆盖效应)。"
"通过时间镜像收集 {0} 份来自【永霜裂痕】不同历史断片的时霜药剂样本(注意时空回响对记忆的覆盖效应)。"
},
{
"瞳孔密钥重构计划",
"从 {0} 个瞳孔状传送门提取量子纠缠碎片(每个采集点需保持镜像对称操作以避免维度塌缩)。"
"前往【千瞳镜湖】,从 {0} 个瞳孔状传送门提取量子纠缠碎片(每个采集点需保持镜像对称操作以避免维度塌缩)。"
},
{
"泰坦符文拓印",
"在雷霆王座山脉的裁决尖碑上拓印 {0} 份不同的泰坦符文(注意避开雷暴时段/每逢子时)。"
"在雷霆王座山脉的裁决尖碑上拓印 {0} 份不同的泰坦符文(注意避开雷暴时段/每逢子时)。"
},
{
"时间碎片收集",
"在流沙时计荒漠的昨日之城中收集 {0} 份不同的时间碎片(注意时间碎片会随机重组)。"
"在流沙时计荒漠的昨日之城中收集 {0} 份不同的时间碎片(注意时间碎片会随机重组)。"
},
{
"共生母体样本采集",
"从腐萤沼渊的共生母体上采集 {0} 份不同的菌类样本(注意菌类会释放麻痹毒素)。"
"从腐萤沼渊的共生母体上采集 {0} 份不同的菌类样本(注意菌类会释放麻痹毒素)。"
},
{
"星锚能量校准",
"在苍穹碎屿的星锚之地校准 {0} 个不同的引雷柱(注意引雷柱会释放高压电流)。"
"在苍穹碎屿的星锚之地校准 {0} 个不同的引雷柱(注意引雷柱会释放高压电流)。"
},
{
"改造逆转实验",
"在齿与血回廊的造物车间进行 {0} 次不同的改造逆转实验(注意改造实验会引发身体异变)。"
"在齿与血回廊的造物车间进行 {0} 次不同的改造逆转实验(注意改造实验会引发身体异变)。"
},
{
"星辉水母观测记录",
"在穹顶之泪湖记录 {0} 次星辉水母重构水体重力法则的完整过程(注意水母重构时会产生重力波动)。"
"在穹顶之泪湖记录 {0} 次星辉水母重构水体重力法则的完整过程(注意水母重构时会产生重力波动)。"
},
{
"构装巨龙残骸分析",
"在齿轮坟场分析 {0} 个不同的构装巨龙残骸(注意残骸可能带有自毁装置)。"
"在齿轮坟场分析 {0} 个不同的构装巨龙残骸(注意残骸可能带有自毁装置)。"
},
{
"亡者记忆提取",
"在回音棱镜林提取 {0} 份不同的亡者记忆(注意记忆提取会引发共感)。"
"在回音棱镜林提取 {0} 份不同的亡者记忆(注意记忆提取会引发共感)。"
},
{
"活体金属苔藓培养",
"在永燃坩埚培养 {0} 份不同的活体金属苔藓样本(注意苔藓会吸收金属)。"
"在永燃坩埚培养 {0} 份不同的活体金属苔藓样本(注意苔藓会吸收金属)。"
},
{
"幽灵船能量分析",
"在骨桥深渊收集 {0} 份幽灵船的能量波动数据(注意幽灵船会释放虚空能量)。"
"在骨桥深渊收集 {0} 份幽灵船的能量波动数据(注意幽灵船会释放虚空能量)。"
},
{
"时凝液提纯",
"在时漏沙漠提纯 {0} 份时凝液(注意时凝液会加速时间流速)。"
"在时漏沙漠提纯 {0} 份时凝液(注意时凝液会加速时间流速)。"
},
{
"蜜蜡编码破解",
"在脉轮圣树破解 {0} 份不同的蜜蜡编码(注意编码会引发精神干扰)。"
"在脉轮圣树破解 {0} 份不同的蜜蜡编码(注意编码会引发精神干扰)。"
},
{
"神经宝石能量分析",
"在悲鸣矿脉分析 {0} 份不同的神经宝石能量(注意宝石会引发山体剧痛)。"
"在悲鸣矿脉分析 {0} 份不同的神经宝石能量(注意宝石会引发山体剧痛)。"
},
{
"湮灭边界观察",
"在双生月崖观察 {0} 次不同的湮灭边界现象(注意湮灭边界会吞噬物质)。"
"在双生月崖观察 {0} 次不同的湮灭边界现象(注意湮灭边界会吞噬物质)。"
},
{
"梦境碎片分析",
"在谵妄海市分析 {0} 份不同的梦境碎片(注意梦境碎片会引发幻觉)。"
"在谵妄海市分析 {0} 份不同的梦境碎片(注意梦境碎片会引发幻觉)。"
}
};

View File

@ -55,11 +55,14 @@ namespace Oshima.FunGame.OshimaServers.Service
foreach (OshimaRegion region in FunGameConstant.Regions)
{
FunGameConstant.AllItems.AddRange(region.Crops.Select(i => i.Copy()));
List<Item> items = [.. region.Crops.Select(i => i.Copy())];
FunGameConstant.ExploreItems.Add(region, items);
}
FunGameConstant.DrawCardItems.AddRange(FunGameConstant.AllItems.Where(i => !FunGameConstant.ItemCanNotDrawCard.Contains(i.ItemType)));
FunGameConstant.AllItems.AddRange(FunGameConstant.ExploreItems.Values.SelectMany(list => list));
Skill?[] activeSkills = [.. FunGameConstant.Equipment.Select(i => i.Skills.Active), .. FunGameConstant.Items.Select(i => i.Skills.Active)];
foreach (Skill? skill in activeSkills)
{
@ -376,6 +379,7 @@ namespace Oshima.FunGame.OshimaServers.Service
FunGameConstant.PassiveSkills.Clear();
FunGameConstant.Magics.Clear();
FunGameConstant.DrawCardItems.Clear();
FunGameConstant.ExploreItems.Clear();
FunGameConstant.AllItems.Clear();
FunGameConstant.ItemSkills.Clear();
FunGameConstant.AllSkills.Clear();

View File

@ -5095,8 +5095,13 @@ namespace Oshima.FunGame.WebAPI.Controllers
regions.Add($"世界地图:");
for (int i = 0; i < FunGameConstant.Regions.Count; i++)
{
Region region = FunGameConstant.Regions[i];
regions.Add($"{region.Id}. {region.Name}");
OshimaRegion region = FunGameConstant.Regions[i];
List<Item> crops = [];
if (FunGameConstant.ExploreItems.TryGetValue(region, out List<Item>? list) && list != null)
{
crops = list;
}
regions.Add($"{region.Id}. {region.Name}" + (crops.Count > 0 ? "(作物:" + string.Join("", crops.Select(i => i.Name)) + "" : ""));
}
regions.Add($"提示:使用【查地区+序号】指令来查看指定地区的信息。");
}
@ -5107,6 +5112,41 @@ namespace Oshima.FunGame.WebAPI.Controllers
return regions;
}
[HttpPost("exploreregion")]
public string ExploreRegion([FromQuery] long? uid = null, [FromQuery] int? id = null)
{
long userid = uid ?? Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 11));
int regionid = id ?? 0;
PluginConfig pc = new("saved", userid.ToString());
pc.LoadConfig();
string msg = "";
if (pc.Count > 0)
{
User user = FunGameService.GetUser(pc);
if (regionid > 0 && regionid <= FunGameConstant.Regions.Count && FunGameConstant.Regions.FirstOrDefault(r => r.Id == regionid) is OshimaRegion region)
{
msg = $"开始探索【{region.Name}】,探索时间:{FunGameConstant.ExploreTime} 分钟。(骗你的,其实还没做)";
}
else
{
return $"没有找到与这个序号相对应的地区!";
}
user.LastTime = DateTime.Now;
pc.Add("user", user);
pc.SaveConfig();
return msg;
}
else
{
return noSaved;
}
}
[HttpGet("reload")]
public string Relaod([FromQuery] long? master = null)
{

View File

@ -1982,6 +1982,31 @@ namespace Oshima.FunGame.WebAPI.Services
return result;
}
if (e.Detail == "世界地图")
{
List<string> msgs = Controller.GetRegion();
if (msgs.Count > 0)
{
await SendAsync(e, "世界地图", string.Join("\r\n", msgs));
}
return result;
}
if (e.Detail.StartsWith("探索", StringComparison.CurrentCultureIgnoreCase) || e.Detail.StartsWith("前往", StringComparison.CurrentCultureIgnoreCase))
{
string detail = e.Detail.Replace("探索", "").Replace("前往", "").Trim();
string msg = "";
if (int.TryParse(detail, out int cid))
{
msg = Controller.ExploreRegion(cid);
if (msg.Trim() != "")
{
await SendAsync(e, "探索", msg);
}
}
return result;
}
if (uid == GeneralSettings.Master && e.Detail.StartsWith("重载FunGame", StringComparison.CurrentCultureIgnoreCase))
{
string msg = NetworkUtility.JsonDeserialize<string>(Controller.Relaod(uid)) ?? "";