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} ] 放弃了行动!");