diff --git a/OshimaModules/Items/GiftBox/礼包.cs b/OshimaModules/Items/GiftBox/礼包.cs index f8a0077..0e3d5f9 100644 --- a/OshimaModules/Items/GiftBox/礼包.cs +++ b/OshimaModules/Items/GiftBox/礼包.cs @@ -162,15 +162,14 @@ namespace Oshima.FunGame.OshimaModules.Items public override long Id => (long)GiftBoxID.魔法卡礼包; public override string Name => "魔法卡礼包"; public override string Description => Skills.Active?.Description ?? ""; - public override QualityType QualityType => _type; public int Count => _count; public Dictionary Gifts { get; set; } = []; - private readonly QualityType _type = QualityType.White; private readonly int _count = 1; public 魔法卡礼包(QualityType type = QualityType.White, int count = 1, User? user = null, int remainUseTimes = 1) : base(ItemType.GiftBox) { - _type = type; + QualityType = type; + Others.Add("QualityType", (int)type); _count = count; User = user; 礼包.Init(this, new() @@ -178,6 +177,14 @@ namespace Oshima.FunGame.OshimaModules.Items { "与礼包同品质、随机属性、随机魔法技能的魔法卡", count } }, remainUseTimes); } + + protected override void AfterCopy() + { + if (Others.TryGetValue("QualityType", out object? value) && int.TryParse(value.ToString(), out int qualityType)) + { + QualityType = (QualityType)qualityType; + } + } } public class 礼包技能 : Skill diff --git a/OshimaServers/Service/FunGameService.cs b/OshimaServers/Service/FunGameService.cs index 8608342..1aeb844 100644 --- a/OshimaServers/Service/FunGameService.cs +++ b/OshimaServers/Service/FunGameService.cs @@ -490,7 +490,7 @@ namespace Oshima.FunGame.OshimaServers.Service foreach (Item inventoryItem in items) { - Item realItem = inventoryItem.Copy(true, true, true, FunGameConstant.AllItems, FunGameConstant.AllSkills); + Item realItem = inventoryItem.Copy(true, true, true, true, FunGameConstant.AllItems, FunGameConstant.AllSkills); realItem.User = user; user.Inventory.Items.Add(realItem); } @@ -1154,9 +1154,16 @@ namespace Oshima.FunGame.OshimaServers.Service SetSellAndTradeTime(newItem); newItem.User = user; user.Inventory.Items.Add(newItem); - cards.Add(newItem.ToStringInventory(false)); + cards.Add($"[{ItemSet.GetQualityTypeName(item.QualityType)}|魔法卡] {newItem.Name}\r\n{newItem.ToStringInventory(false)}"); } msg = "打开礼包成功!获得了以下物品:\r\n" + string.Join("\r\n", cards); + item.RemainUseTimes--; + if (item.RemainUseTimes < 0) item.RemainUseTimes = 0; + if (item.RemainUseTimes == 0) + { + user.Inventory.Items.Remove(item); + } + return true; } else if (item is 礼包.GiftBox box && box.Gifts.Count > 0) { diff --git a/OshimaWebAPI/Controllers/ActivityController.cs b/OshimaWebAPI/Controllers/ActivityController.cs index 9cf44b8..de13893 100644 --- a/OshimaWebAPI/Controllers/ActivityController.cs +++ b/OshimaWebAPI/Controllers/ActivityController.cs @@ -51,29 +51,29 @@ namespace Oshima.FunGame.WebAPI.Controllers } } - [HttpPut("{id}")] - public IActionResult UpdateActivity(long id, [FromBody] Activity? activity = null) - { - try - { - if (activity is null || activity.Id != id) - { - return BadRequest("活动更新失败,活动 ID 与请求体 ID 不匹配或请求体格式错误。"); - } + //[HttpPut("{id}")] + //public IActionResult UpdateActivity(long id, [FromBody] Activity? activity = null) + //{ + // try + // { + // if (activity is null || activity.Id != id) + // { + // return BadRequest("活动更新失败,活动 ID 与请求体 ID 不匹配或请求体格式错误。"); + // } - EntityModuleConfig activities = new("activities", "activities"); - activities.LoadConfig(); - activities.Add(activity.Id.ToString(), activity); - activities.SaveConfig(); + // EntityModuleConfig activities = new("activities", "activities"); + // activities.LoadConfig(); + // activities.Add(activity.Id.ToString(), activity); + // activities.SaveConfig(); - return Ok($"活动 {activity.GetIdName()} 更新成功。"); - } - catch (Exception e) - { - _logger.LogError(e, "Error: "); - return StatusCode(500, "更新活动时发生错误,请检查日志。"); - } - } + // return Ok($"活动 {activity.GetIdName()} 更新成功。"); + // } + // catch (Exception e) + // { + // _logger.LogError(e, "Error: "); + // return StatusCode(500, "更新活动时发生错误,请检查日志。"); + // } + //} [HttpDelete("{id}")] public IActionResult RemoveActivity(long id) @@ -125,39 +125,39 @@ namespace Oshima.FunGame.WebAPI.Controllers } } - [HttpPut("{id}/{questId}")] - public IActionResult UpdateQuest(long id, long questId, [FromBody] Quest? quest = null) - { - try - { - if (quest is null || quest.Id != questId) - { - return BadRequest("任务更新失败,任务 ID 与请求体 ID 不匹配或请求体格式错误。"); - } + //[HttpPut("{id}/{questId}")] + //public IActionResult UpdateQuest(long id, long questId, [FromBody] Quest? quest = null) + //{ + // try + // { + // if (quest is null || quest.Id != questId) + // { + // return BadRequest("任务更新失败,任务 ID 与请求体 ID 不匹配或请求体格式错误。"); + // } - EntityModuleConfig activities = new("activities", "activities"); - activities.LoadConfig(); - Activity? activity = activities.Values.FirstOrDefault(a => a.Id == id); - if (activity != null) - { - if (activity.Quests.FirstOrDefault(q => q.Id == quest.Id) is Quest current) - { - activity.Quests.Remove(quest); - } - activity.Quests.Add(quest); - activities.Add(activity.Id.ToString(), activity); - activities.SaveConfig(); - return Ok($"任务 {quest.GetIdName()}(属于活动【{activity.Name}】)更新成功。"); - } + // EntityModuleConfig activities = new("activities", "activities"); + // activities.LoadConfig(); + // Activity? activity = activities.Values.FirstOrDefault(a => a.Id == id); + // if (activity != null) + // { + // if (activity.Quests.FirstOrDefault(q => q.Id == quest.Id) is Quest current) + // { + // activity.Quests.Remove(quest); + // } + // activity.Quests.Add(quest); + // activities.Add(activity.Id.ToString(), activity); + // activities.SaveConfig(); + // return Ok($"任务 {quest.GetIdName()}(属于活动【{activity.Name}】)更新成功。"); + // } - return NotFound($"活动编号 {id} 不存在。"); - } - catch (Exception e) - { - _logger.LogError(e, "Error: "); - return StatusCode(500, "更新任务时发生错误,请检查日志。"); - } - } + // return NotFound($"活动编号 {id} 不存在。"); + // } + // catch (Exception e) + // { + // _logger.LogError(e, "Error: "); + // return StatusCode(500, "更新任务时发生错误,请检查日志。"); + // } + //} [HttpDelete("{id}/{questId}")] public IActionResult RemoveQuest(long id, long questId) diff --git a/OshimaWebAPI/Controllers/FunGameController.cs b/OshimaWebAPI/Controllers/FunGameController.cs index 43db5b0..3c53229 100644 --- a/OshimaWebAPI/Controllers/FunGameController.cs +++ b/OshimaWebAPI/Controllers/FunGameController.cs @@ -2054,6 +2054,11 @@ namespace Oshima.FunGame.WebAPI.Controllers item = user.Inventory.Items.ToList()[itemIndex - 1]; if (FunGameConstant.ItemCanUsed.Contains(item.ItemType)) { + if (item.ItemType == ItemType.MagicCard) + { + return "此物品为魔法卡,请使用【使用魔法卡】指令!"; + } + if (item.RemainUseTimes <= 0) { return "此物品剩余使用次数为0,无法使用!";