diff --git a/Entity/Explore/Activity.cs b/Entity/Explore/Activity.cs index f519750..25496e9 100644 --- a/Entity/Explore/Activity.cs +++ b/Entity/Explore/Activity.cs @@ -86,21 +86,22 @@ namespace Milimoe.FunGame.Core.Entity if (Status != newState) { Status = newState; - foreach (Quest quest in Quests) + } + + foreach (Quest quest in Quests) + { + if (Status == ActivityState.InProgress) { - if (newState == ActivityState.InProgress) + if (quest.Status == QuestState.NotStarted && quest.QuestType == QuestType.Progressive) { - if (quest.Status == QuestState.NotStarted && quest.QuestType == QuestType.Progressive) - { - quest.Status = QuestState.InProgress; - } + quest.Status = QuestState.InProgress; } - else if (newState == ActivityState.Ended) + } + else if (Status == ActivityState.Ended) + { + if (quest.Status == QuestState.NotStarted || quest.Status == QuestState.InProgress) { - if (quest.Status == QuestState.NotStarted || quest.Status == QuestState.InProgress) - { - quest.Status = QuestState.Missed; - } + quest.Status = QuestState.Missed; } } } @@ -149,15 +150,23 @@ namespace Milimoe.FunGame.Core.Entity UserGetActivityInfo?.Invoke(args); } - public string ToString(bool showQuests) + public string ToString(bool showQuests, bool isSubActivity = false) { UpdateState(); StringBuilder builder = new(); - builder.AppendLine($"☆--- {Name} ---☆"); + if (!isSubActivity) + { + builder.AppendLine($"☆--- {Name} ---☆"); + } + else + { + builder.AppendLine($"==[ {Name} ]=="); + } + builder.AppendLine($"{Description}"); builder.AppendLine($"活动状态:{CommonSet.GetActivityStatus(Status)}"); - builder.AppendLine(GetTimeString()); + builder.AppendLine(GetTimeString(!isSubActivity)); if (showQuests && Quests.Count > 0) { diff --git a/Entity/Explore/Quest.cs b/Entity/Explore/Quest.cs index 28086d8..a653417 100644 --- a/Entity/Explore/Quest.cs +++ b/Entity/Explore/Quest.cs @@ -7,6 +7,7 @@ namespace Milimoe.FunGame.Core.Entity { public string Description { get; set; } = ""; public QuestState Status { get; set; } = QuestState.NotStarted; + public bool Global { get; set; } = false; public long CharacterId { get; set; } = 0; public long RegionId { get; set; } = 0; public string NeedyExploreCharacterName { get; set; } = ""; diff --git a/Entity/Item/Item.cs b/Entity/Item/Item.cs index 447c2ce..81fbe3c 100644 --- a/Entity/Item/Item.cs +++ b/Entity/Item/Item.cs @@ -32,6 +32,16 @@ namespace Milimoe.FunGame.Core.Entity /// public virtual string BackgroundStory { get; set; } = ""; + /// + /// 物品的分类 + /// + public virtual string Category { get; set; } = ""; + + /// + /// 物品的标签 + /// + public virtual List Tags { get; set; } = []; + /// /// 物品类型 /// @@ -448,6 +458,7 @@ namespace Milimoe.FunGame.Core.Entity if (itemtype != "") itemtype = $" {itemtype}"; builder.AppendLine($"{itemquality + itemtype}"); + if (!string.IsNullOrWhiteSpace(Category)) builder.AppendLine(Category); if (isShowInStore && Price > 0) { @@ -593,6 +604,7 @@ namespace Milimoe.FunGame.Core.Entity if (sellandtrade.Count > 0) builder.AppendLine(string.Join(" ", sellandtrade).Trim()); if (Description != "") builder.AppendLine($"{Description}"); if (IsEquipment && Character != null) builder.AppendLine($"装备于:{Character.ToStringWithLevelWithOutUser()}"); + if (Tags.Count > 0) builder.AppendLine($"标签:{string.Join(",", Tags)}"); } return builder.ToString(); diff --git a/Library/Common/JsonConverter/ItemConverter.cs b/Library/Common/JsonConverter/ItemConverter.cs index 513f2b8..679079b 100644 --- a/Library/Common/JsonConverter/ItemConverter.cs +++ b/Library/Common/JsonConverter/ItemConverter.cs @@ -35,6 +35,16 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter case nameof(Item.BackgroundStory): result.BackgroundStory = reader.GetString() ?? ""; break; + case nameof(Item.Category): + result.Category = reader.GetString() ?? ""; + break; + case nameof(Item.Tags): + string[] tags = NetworkUtility.JsonDeserialize(ref reader, options) ?? []; + foreach (string tag in tags) + { + result.Tags.Add(tag); + } + break; case nameof(Item.ItemType): result.ItemType = (ItemType)reader.GetInt32(); break; @@ -129,6 +139,9 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter writer.WriteString(nameof(Item.Description), value.Description); writer.WriteString(nameof(Item.GeneralDescription), value.GeneralDescription); writer.WriteString(nameof(Item.BackgroundStory), value.BackgroundStory); + writer.WriteString(nameof(Item.Category), value.Category); + writer.WritePropertyName(nameof(Item.Tags)); + JsonSerializer.Serialize(writer, value.Tags, options); writer.WriteNumber(nameof(Item.ItemType), (int)value.ItemType); writer.WriteNumber(nameof(Item.WeaponType), (int)value.WeaponType); writer.WriteNumber(nameof(Item.EquipSlotType), (int)value.EquipSlotType); diff --git a/Library/Common/JsonConverter/QuestConverter.cs b/Library/Common/JsonConverter/QuestConverter.cs index d65bc19..4d10189 100644 --- a/Library/Common/JsonConverter/QuestConverter.cs +++ b/Library/Common/JsonConverter/QuestConverter.cs @@ -32,6 +32,9 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter case nameof(Quest.Status): result.Status = (QuestState)reader.GetInt32(); break; + case nameof(Quest.Global): + result.Global = reader.GetBoolean(); + break; case nameof(Quest.CharacterId): result.CharacterId = reader.GetInt64(); break; @@ -109,6 +112,7 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter writer.WriteString(nameof(Quest.Name), value.Name); writer.WriteString(nameof(Quest.Description), value.Description); writer.WriteNumber(nameof(Quest.Status), (int)value.Status); + writer.WriteBoolean(nameof(Quest.Global), value.Global); writer.WriteNumber(nameof(Quest.CharacterId), value.CharacterId); writer.WriteNumber(nameof(Quest.RegionId), value.RegionId); writer.WriteString(nameof(Quest.NeedyExploreCharacterName), value.NeedyExploreCharacterName); diff --git a/Model/GamingQueue.cs b/Model/GamingQueue.cs index c401c98..75a44af 100644 --- a/Model/GamingQueue.cs +++ b/Model/GamingQueue.cs @@ -1486,6 +1486,12 @@ namespace Milimoe.FunGame.Core.Model } } + if (!decided && (isAI || cancelTimes == 0)) + { + baseTime += 5; + type = CharacterActionType.EndTurn; + } + if (type == CharacterActionType.None) { WriteLine($"[ {character} ] 放弃了行动!");