添加了用户名缓存;调整了一些物品的数值;添加了按用户名决斗的API

This commit is contained in:
milimoe 2024-12-11 01:34:08 +08:00
parent 7b245ee263
commit 46d2cc2794
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
8 changed files with 163 additions and 59 deletions

View File

@ -313,6 +313,7 @@ namespace Oshima.Core.Controllers
User user = Factory.GetUser(userid, username, DateTime.Now, DateTime.Now, userid + "@qq.com", username); User user = Factory.GetUser(userid, username, DateTime.Now, DateTime.Now, userid + "@qq.com", username);
user.Inventory.Credits = 5000000; user.Inventory.Credits = 5000000;
user.Inventory.Characters.Add(new CustomCharacter(userid, username)); user.Inventory.Characters.Add(new CustomCharacter(userid, username));
FunGameService.UserIdAndUsername[userid] = username;
pc.Add("user", user); pc.Add("user", user);
pc.SaveConfig(); pc.SaveConfig();
return NetworkUtility.JsonSerialize($"创建存档成功!你的用户名是【{username}】。"); return NetworkUtility.JsonSerialize($"创建存档成功!你的用户名是【{username}】。");
@ -338,6 +339,7 @@ namespace Oshima.Core.Controllers
user.Inventory.Materials = 0; user.Inventory.Materials = 0;
user.Inventory.Characters.Clear(); user.Inventory.Characters.Clear();
user.Inventory.Items.Clear(); user.Inventory.Items.Clear();
user.Inventory.Characters.Add(new CustomCharacter(userid, user.Username));
user.LastTime = DateTime.Now; user.LastTime = DateTime.Now;
pc.Add("user", user); pc.Add("user", user);
pc.SaveConfig(); pc.SaveConfig();
@ -380,6 +382,7 @@ namespace Oshima.Core.Controllers
{ {
user.Inventory.Name = user.Username + "的库存"; user.Inventory.Name = user.Username + "的库存";
} }
FunGameService.UserIdAndUsername[user.Id] = user.Username;
user.LastTime = DateTime.Now; user.LastTime = DateTime.Now;
pc.Add("user", user); pc.Add("user", user);
pc.SaveConfig(); pc.SaveConfig();
@ -1101,12 +1104,13 @@ namespace Oshima.Core.Controllers
} }
[HttpPost("showcharacterinfo")] [HttpPost("showcharacterinfo")]
public string GetCharacterInfoFromInventory([FromQuery] long? qq = null, [FromQuery] int? seq = null) public string GetCharacterInfoFromInventory([FromQuery] long? qq = null, [FromQuery] int? seq = null, [FromQuery] bool? simple = null)
{ {
try try
{ {
long userid = qq ?? Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 11)); long userid = qq ?? Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 11));
int cIndex = seq ?? 0; int cIndex = seq ?? 0;
bool isSimple = simple ?? false;
PluginConfig pc = new("saved", userid.ToString()); PluginConfig pc = new("saved", userid.ToString());
pc.LoadConfig(); pc.LoadConfig();
@ -1118,6 +1122,10 @@ namespace Oshima.Core.Controllers
if (cIndex > 0 && cIndex <= user.Inventory.Characters.Count) if (cIndex > 0 && cIndex <= user.Inventory.Characters.Count)
{ {
Character character = user.Inventory.Characters.ToList()[cIndex - 1]; Character character = user.Inventory.Characters.ToList()[cIndex - 1];
if (isSimple)
{
return NetworkUtility.JsonSerialize($"这是你库存中序号为 {cIndex} 的角色简略信息:\r\n{character.GetSimpleInfo().Trim()}");
}
return NetworkUtility.JsonSerialize($"这是你库存中序号为 {cIndex} 的角色详细信息:\r\n{character.GetInfo().Trim()}"); return NetworkUtility.JsonSerialize($"这是你库存中序号为 {cIndex} 的角色详细信息:\r\n{character.GetInfo().Trim()}");
} }
else else
@ -1345,6 +1353,28 @@ namespace Oshima.Core.Controllers
} }
} }
[HttpPost("fightcustom2")]
public List<string> FightCustom2([FromQuery] long? qq = null, [FromQuery] string? name = null)
{
try
{
if (name != null)
{
long enemyid = FunGameService.UserIdAndUsername.Where(kv => kv.Value == name).Select(kv => kv.Key).FirstOrDefault();
if (enemyid == 0)
{
return [$"找不到此名称对应的玩家!"];
}
return FightCustom(qq, enemyid);
}
return [$"决斗发起失败!"];
}
catch (Exception e)
{
return [e.ToString()];
}
}
[HttpGet("reload")] [HttpGet("reload")]
public string Relaod([FromQuery] long? master = null) public string Relaod([FromQuery] long? master = null)
{ {

View File

@ -1,4 +1,6 @@
using Milimoe.FunGame.Core.Library.Common.Addon; using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Oshima.Core.Configs; using Oshima.Core.Configs;
using Oshima.Core.Constant; using Oshima.Core.Constant;
using Oshima.Core.Utils; using Oshima.Core.Utils;
@ -114,6 +116,27 @@ namespace Oshima.Core.WebAPI
} }
} }
}); });
Task taskCache = Task.Factory.StartNew(async () =>
{
string directoryPath = $@"{AppDomain.CurrentDomain.BaseDirectory}configs/saved";
if (Directory.Exists(directoryPath))
{
string[] filePaths = Directory.GetFiles(directoryPath);
foreach (string filePath in filePaths)
{
string fileName = Path.GetFileNameWithoutExtension(filePath);
PluginConfig pc = new("saved", fileName);
pc.LoadConfig();
if (pc.Count > 0)
{
User user = FunGameService.GetUser(pc);
FunGameService.UserIdAndUsername[user.Id] = user.Username;
}
}
Controller.WriteLine("读取 FunGame 存档缓存");
}
await Task.Delay(3000 * 60 * 10);
});
} }
} }
} }

View File

@ -566,13 +566,9 @@ namespace Oshima.Core.Utils
DeathMatchRoundDetail = deathMatchRoundDetail; DeathMatchRoundDetail = deathMatchRoundDetail;
try try
{ {
if (IsRuning) return ["游戏正在进行中,请勿重复请求!"];
List<string> result = []; List<string> result = [];
Msg = ""; Msg = "";
IsRuning = true;
if (PrintOut) Console.WriteLine(); if (PrintOut) Console.WriteLine();
if (PrintOut) Console.WriteLine("Start!!!"); if (PrintOut) Console.WriteLine("Start!!!");
if (PrintOut) Console.WriteLine(); if (PrintOut) Console.WriteLine();
@ -755,6 +751,12 @@ namespace Oshima.Core.Utils
{ {
roundMsg = actionQueue.LastRound.ToString().Trim() + $"\r\n{(isTeam ? $"{string.Join(" / ", actionQueue.Teams.Values.Select(t => $"{t.Name}({t.Score})"))}{actionQueue.GetTeam(actionQueue.LastRound.Actor)}" : "")}\r\n"; roundMsg = actionQueue.LastRound.ToString().Trim() + $"\r\n{(isTeam ? $"{string.Join(" / ", actionQueue.Teams.Values.Select(t => $"{t.Name}({t.Score})"))}{actionQueue.GetTeam(actionQueue.LastRound.Actor)}" : "")}\r\n";
} }
roundMsg += "\r\n";
foreach (Character character in characters)
{
roundMsg += $"[ {character} ] 生命值:{character.HP}/{character.MaxHP}" + "\r\n";
}
roundMsg = roundMsg.Trim();
Msg = ""; Msg = "";
} }
@ -781,7 +783,7 @@ namespace Oshima.Core.Utils
// 赛后统计 // 赛后统计
GetCharacterRating(actionQueue.CharacterStatistics, isTeam, actionQueue.EliminatedTeams); GetCharacterRating(actionQueue.CharacterStatistics, isTeam, actionQueue.EliminatedTeams);
int top = isWeb ? actionQueue.CharacterStatistics.Count : 4; // 回执多少个角色的统计信息 int top = isWeb ? actionQueue.CharacterStatistics.Count : 2; // 回执多少个角色的统计信息
int count = 1; int count = 1;
if (isWeb) if (isWeb)
{ {
@ -790,23 +792,26 @@ namespace Oshima.Core.Utils
} }
else else
{ {
//WriteLine("=== 本场比赛最佳角色 ==="); if (isTeam)
//Msg = $"=== 本场比赛最佳角色 ===\r\n"; {
//// 统计技术得分 WriteLine("=== 本场比赛最佳角色 ===");
//Character? character = actionQueue.CharacterStatistics.OrderByDescending(d => d.Value.Rating).Select(d => d.Key).FirstOrDefault(); Msg = $"=== 本场比赛最佳角色 ===\r\n";
//if (character != null) // 统计技术得分
//{ Character? character = actionQueue.CharacterStatistics.OrderByDescending(d => d.Value.Rating).Select(d => d.Key).FirstOrDefault();
// CharacterStatistics stats = actionQueue.CharacterStatistics[character]; if (character != null)
// stats.MVPs++; {
// StringBuilder builder = new(); CharacterStatistics stats = actionQueue.CharacterStatistics[character];
// builder.AppendLine($"{(isWeb ? count + "." : (isTeam ? "[ " + actionQueue.GetTeamFromEliminated(character)?.Name + " ]" ?? " " : ""))}[ {character.ToStringWithLevel()} ]"); stats.MVPs++;
// builder.AppendLine($"技术得分:{stats.Rating:0.##} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / 死亡数:" + stats.Deaths : "")}"); StringBuilder builder = new();
// builder.AppendLine($"存活时长:{stats.LiveTime} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}"); builder.AppendLine($"{(isTeam ? "[ " + actionQueue.GetTeamFromEliminated(character)?.Name + " ] " : "")}[ {character.ToStringWithLevel()} ]");
// builder.AppendLine($"总计伤害:{stats.TotalDamage} / 总计物理伤害:{stats.TotalPhysicalDamage} / 总计魔法伤害:{stats.TotalMagicDamage}"); builder.AppendLine($"技术得分:{stats.Rating:0.##} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / " + stats.Deaths : "")}");
// builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage} / 总承受魔法伤害:{stats.TotalTakenMagicDamage}"); builder.AppendLine($"存活时长:{stats.LiveTime} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
// builder.Append($"每秒伤害:{stats.DamagePerSecond} / 每回合伤害:{stats.DamagePerTurn}"); builder.AppendLine($"总计伤害:{stats.TotalDamage} / 总计物理伤害:{stats.TotalPhysicalDamage} / 总计魔法伤害:{stats.TotalMagicDamage}");
// WriteLine(builder.ToString()); builder.AppendLine($"总承受伤害:{stats.TotalTakenDamage} / 总承受物理伤害:{stats.TotalTakenPhysicalDamage} / 总承受魔法伤害:{stats.TotalTakenMagicDamage}");
//} builder.Append($"每秒伤害:{stats.DamagePerSecond} / 每回合伤害:{stats.DamagePerTurn}");
WriteLine(builder.ToString());
}
}
} }
if (PrintOut) if (PrintOut)
@ -815,7 +820,7 @@ namespace Oshima.Core.Utils
Console.WriteLine("=== 技术得分排行榜 ==="); Console.WriteLine("=== 技术得分排行榜 ===");
} }
Msg = "=== 技术得分排行榜 ===\r\n"; Msg = $"=== 技术得分排行榜 TOP{top} ===\r\n";
if (isTeam) if (isTeam)
{ {
@ -845,7 +850,7 @@ namespace Oshima.Core.Utils
{ {
StringBuilder builder = new(); StringBuilder builder = new();
CharacterStatistics stats = actionQueue.CharacterStatistics[character]; CharacterStatistics stats = actionQueue.CharacterStatistics[character];
builder.AppendLine($"{(isWeb ? count + ". " : "")}[ {character.ToStringWithLevel()} ]"); builder.AppendLine($"{count + ". "}[ {character.ToStringWithLevel()} ]");
builder.AppendLine($"技术得分:{stats.Rating:0.##} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / " + stats.Deaths : "")}"); builder.AppendLine($"技术得分:{stats.Rating:0.##} / 击杀数:{stats.Kills} / 助攻数:{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / " + stats.Deaths : "")}");
builder.AppendLine($"存活时长:{stats.LiveTime} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}"); builder.AppendLine($"存活时长:{stats.LiveTime} / 存活回合数:{stats.LiveRound} / 行动回合数:{stats.ActionTurn}");
builder.AppendLine($"总计伤害:{stats.TotalDamage} / 总计物理伤害:{stats.TotalPhysicalDamage} / 总计魔法伤害:{stats.TotalMagicDamage}"); builder.AppendLine($"总计伤害:{stats.TotalDamage} / 总计物理伤害:{stats.TotalPhysicalDamage} / 总计魔法伤害:{stats.TotalMagicDamage}");
@ -907,13 +912,10 @@ namespace Oshima.Core.Utils
} }
} }
IsRuning = false;
return result; return result;
} }
catch (Exception ex) catch (Exception ex)
{ {
IsRuning = false;
Console.WriteLine(ex); Console.WriteLine(ex);
return [ex.ToString()]; return [ex.ToString()];
} }

View File

@ -17,6 +17,7 @@ namespace Oshima.Core.Utils
public static List<Skill> Magics { get; } = []; public static List<Skill> Magics { get; } = [];
public static List<Item> Equipment { get; } = []; public static List<Item> Equipment { get; } = [];
public static List<Item> Items { get; } = []; public static List<Item> Items { get; } = [];
public static Dictionary<long, string> UserIdAndUsername { get; } = [];
public static void InitFunGame() public static void InitFunGame()
{ {
@ -35,7 +36,7 @@ namespace Oshima.Core.Utils
Dictionary<string, Item> exItems = Factory.GetGameModuleInstances<Item>(OshimaGameModuleConstant.General, OshimaGameModuleConstant.Item); Dictionary<string, Item> exItems = Factory.GetGameModuleInstances<Item>(OshimaGameModuleConstant.General, OshimaGameModuleConstant.Item);
Equipment.AddRange(exItems.Values.Where(i => (int)i.ItemType >= 0 && (int)i.ItemType < 5)); Equipment.AddRange(exItems.Values.Where(i => (int)i.ItemType >= 0 && (int)i.ItemType < 5));
Equipment.AddRange([new 10(), new 30(), new 50()]); Equipment.AddRange([new 10(), new 20(), new 35(), new 50()]);
Items.AddRange(exItems.Values.Where(i => (int)i.ItemType > 4)); Items.AddRange(exItems.Values.Where(i => (int)i.ItemType > 4));

View File

@ -18,16 +18,29 @@ namespace Oshima.FunGame.OshimaModules.Items
} }
} }
public class 30 : Item public class 20 : Item
{ {
public override long Id => (long)AccessoryID.30; public override long Id => (long)AccessoryID.20;
public override string Name => "攻击之爪 +30"; public override string Name => "攻击之爪 +20";
public override string Description => Skills.Passives.Count > 0 ? Skills.Passives.First().Description : ""; public override string Description => Skills.Passives.Count > 0 ? Skills.Passives.First().Description : "";
public override QualityType QualityType => QualityType.Green; public override QualityType QualityType => QualityType.Green;
public 30(Character? character = null) : base(ItemType.Accessory) public 20(Character? character = null) : base(ItemType.Accessory)
{ {
Skills.Passives.Add(new (character, this, 30)); Skills.Passives.Add(new (character, this, 20));
}
}
public class 35 : Item
{
public override long Id => (long)AccessoryID.35;
public override string Name => "攻击之爪 +35";
public override string Description => Skills.Passives.Count > 0 ? Skills.Passives.First().Description : "";
public override QualityType QualityType => QualityType.Blue;
public 35(Character? character = null) : base(ItemType.Accessory)
{
Skills.Passives.Add(new (character, this, 35));
} }
} }
@ -36,7 +49,7 @@ namespace Oshima.FunGame.OshimaModules.Items
public override long Id => (long)AccessoryID.50; public override long Id => (long)AccessoryID.50;
public override string Name => "攻击之爪 +50"; public override string Name => "攻击之爪 +50";
public override string Description => Skills.Passives.Count > 0 ? Skills.Passives.First().Description : ""; public override string Description => Skills.Passives.Count > 0 ? Skills.Passives.First().Description : "";
public override QualityType QualityType => QualityType.Blue; public override QualityType QualityType => QualityType.Purple;
public 50(Character? character = null) : base(ItemType.Accessory) public 50(Character? character = null) : base(ItemType.Accessory)
{ {

View File

@ -3,7 +3,8 @@
public enum AccessoryID : long public enum AccessoryID : long
{ {
10 = 14001, 10 = 14001,
30 = 14002, 20 = 14002,
50 = 14003, 35 = 14003,
50 = 14004,
} }
} }

View File

@ -26,7 +26,8 @@ namespace Oshima.FunGame.OshimaModules
return id switch return id switch
{ {
(long)AccessoryID.10 => new 10(), (long)AccessoryID.10 => new 10(),
(long)AccessoryID.30 => new 30(), (long)AccessoryID.20 => new 20(),
(long)AccessoryID.35 => new 35(),
(long)AccessoryID.50 => new 50(), (long)AccessoryID.50 => new 50(),
_ => null, _ => null,
}; };

View File

@ -637,7 +637,7 @@
"初级法袍": { "初级法袍": {
"Id": 12501, "Id": 12501,
"Name": "初级法袍", "Name": "初级法袍",
"Description": "增加角色 10% 魔法抗性。", "Description": "增加角色 8% 魔法抗性。",
"BackgroundStory": "可以不穿,不能没有。", "BackgroundStory": "可以不穿,不能没有。",
"ItemType": 2, "ItemType": 2,
"WeaponType": 0, "WeaponType": 0,
@ -653,7 +653,7 @@
{ {
"Id": 8020, "Id": 8020,
"mdftype": 0, "mdftype": 0,
"mdfvalue": 0.1 "mdfvalue": 0.08
} }
] ]
} }
@ -688,7 +688,7 @@
"圣洁之盾": { "圣洁之盾": {
"Id": 12503, "Id": 12503,
"Name": "圣洁之盾", "Name": "圣洁之盾",
"Description": "受到的物理伤害减少 20%。", "Description": "增加 10% 物理伤害减免。",
"BackgroundStory": "传说中由圣光祝福的盾牌,能够抵挡邪恶的力量。", "BackgroundStory": "传说中由圣光祝福的盾牌,能够抵挡邪恶的力量。",
"ItemType": 2, "ItemType": 2,
"WeaponType": 0, "WeaponType": 0,
@ -703,7 +703,7 @@
"Effects": [ "Effects": [
{ {
"Id": 8019, "Id": 8019,
"expdr": 0.20 "expdr": 0.10
} }
] ]
} }
@ -713,7 +713,7 @@
"魔能法袍": { "魔能法袍": {
"Id": 12504, "Id": 12504,
"Name": "魔能法袍", "Name": "魔能法袍",
"Description": "增加角色 15 点智力和 20% 魔法抗性。", "Description": "增加角色 15 点智力和 15% 魔法抗性。",
"BackgroundStory": "法袍蕴含着神秘的魔力,穿戴者能增强魔法威力。", "BackgroundStory": "法袍蕴含着神秘的魔力,穿戴者能增强魔法威力。",
"ItemType": 2, "ItemType": 2,
"WeaponType": 0, "WeaponType": 0,
@ -733,7 +733,7 @@
{ {
"Id": 8020, "Id": 8020,
"mdftype": 0, "mdftype": 0,
"mdfvalue": 0.2 "mdfvalue": 0.15
} }
] ]
} }
@ -971,7 +971,7 @@
"富贵头冠": { "富贵头冠": {
"Id": 14502, "Id": 14502,
"Name": "富贵头冠", "Name": "富贵头冠",
"Description": "增加角色 170 点最大生命值和 80 点最大魔法值。", "Description": "增加角色 70 点最大生命值和 40 点最大魔法值。",
"BackgroundStory": "辉煌华贵的头冠。", "BackgroundStory": "辉煌华贵的头冠。",
"ItemType": 4, "ItemType": 4,
"WeaponType": 0, "WeaponType": 0,
@ -986,11 +986,11 @@
"Effects": [ "Effects": [
{ {
"Id": 8012, "Id": 8012,
"exhp": 170 "exhp": 70
}, },
{ {
"Id": 8013, "Id": 8013,
"exmp": 80 "exmp": 40
} }
] ]
} }
@ -1000,7 +1000,7 @@
"黄金挂坠": { "黄金挂坠": {
"Id": 14503, "Id": 14503,
"Name": "黄金挂坠", "Name": "黄金挂坠",
"Description": "增加角色 300 点最大生命值。", "Description": "增加角色 150 点最大生命值。",
"BackgroundStory": "珍贵稀有的黄金挂件,象征财富与荣耀的护身符。", "BackgroundStory": "珍贵稀有的黄金挂件,象征财富与荣耀的护身符。",
"ItemType": 4, "ItemType": 4,
"WeaponType": 0, "WeaponType": 0,
@ -1015,7 +1015,7 @@
"Effects": [ "Effects": [
{ {
"Id": 8012, "Id": 8012,
"exhp": 300 "exhp": 150
} }
] ]
} }
@ -1025,7 +1025,7 @@
"辉煌光环": { "辉煌光环": {
"Id": 14504, "Id": 14504,
"Name": "辉煌光环", "Name": "辉煌光环",
"Description": "增加角色 170 点最大魔法值和 6 点每时间魔法回复。", "Description": "增加角色 80 点最大魔法值和 5 点每时间魔法回复。",
"BackgroundStory": "流光溢彩的光环。", "BackgroundStory": "流光溢彩的光环。",
"ItemType": 4, "ItemType": 4,
"WeaponType": 0, "WeaponType": 0,
@ -1040,11 +1040,11 @@
"Effects": [ "Effects": [
{ {
"Id": 8013, "Id": 8013,
"exmp": 170 "exmp": 80
}, },
{ {
"Id": 8022, "Id": 8022,
"exmr": 6 "exmr": 5
} }
] ]
} }
@ -1203,7 +1203,7 @@
"YukiのCalfSocks": { "YukiのCalfSocks": {
"Id": 14510, "Id": 14510,
"Name": "YukiのCalfSocks", "Name": "YukiのCalfSocks",
"Description": "增加角色 15% 暴击率和 30% 暴击伤害。", "Description": "增加角色 10% 暴击率和 20% 暴击伤害。",
"BackgroundStory": "小雪的小腿袜,拥有神秘的力量,令人神往。", "BackgroundStory": "小雪的小腿袜,拥有神秘的力量,令人神往。",
"ItemType": 4, "ItemType": 4,
"WeaponType": 0, "WeaponType": 0,
@ -1218,11 +1218,11 @@
"Effects": [ "Effects": [
{ {
"Id": 8014, "Id": 8014,
"excr": 0.15 "excr": 0.1
}, },
{ {
"Id": 8015, "Id": 8015,
"excrd": 0.3 "excrd": 0.2
} }
] ]
} }
@ -1286,7 +1286,7 @@
"路人哥的cos服": { "路人哥的cos服": {
"Id": 14513, "Id": 14513,
"Name": "路人哥的cos服", "Name": "路人哥的cos服",
"Description": "增加角色 10% 攻击力,增加角色 15% 魔法抗性,但是会减少 8% 物理伤害减免。", "Description": "增加角色 10% 攻击力,增加角色 10% 魔法抗性,但是会减少 8% 物理伤害减免。",
"BackgroundStory": "一套神秘的服饰,据说穿上后会引发未知的力量变化。", "BackgroundStory": "一套神秘的服饰,据说穿上后会引发未知的力量变化。",
"ItemType": 4, "ItemType": 4,
"WeaponType": 0, "WeaponType": 0,
@ -1306,7 +1306,7 @@
{ {
"Id": 8020, "Id": 8020,
"mdftype": 0, "mdftype": 0,
"mdfvalue": 0.15 "mdfvalue": 0.10
}, },
{ {
"Id": 8019, "Id": 8019,
@ -1316,5 +1316,38 @@
} }
] ]
} }
},
"白月光的玉佩": {
"Id": 14514,
"Name": "白月光的玉佩",
"Description": "增加角色 15% 魔法抗性8 点每时间魔法回复和 15% 冷却缩减。",
"BackgroundStory": "据说每个总裁都有一个救命恩人,还有一个冒充救命恩人的人。",
"ItemType": 4,
"WeaponType": 0,
"QualityType": 3,
"Skills": {
"Active": null,
"Passives": [
{
"Id": 7314,
"Name": "白月光的玉佩",
"SkillType": 3,
"Effects": [
{
"Id": 8020,
"exatk": 0.15
},
{
"Id": 8022,
"exmr": 8
},
{
"Id": 8011,
"excdr": 0.1
}
]
}
]
}
} }
} }