mirror of
https://github.com/project-redbud/FunGame-Core.git
synced 2026-01-19 14:08:22 +00:00
物品添加分类和标签属性;修复AI自动化死循环问题;活动和任务系统改进
This commit is contained in:
parent
82d8f927fe
commit
11afb4dc95
@ -86,21 +86,22 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
if (Status != newState)
|
if (Status != newState)
|
||||||
{
|
{
|
||||||
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);
|
UserGetActivityInfo?.Invoke(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ToString(bool showQuests)
|
public string ToString(bool showQuests, bool isSubActivity = false)
|
||||||
{
|
{
|
||||||
UpdateState();
|
UpdateState();
|
||||||
StringBuilder builder = new();
|
StringBuilder builder = new();
|
||||||
|
|
||||||
builder.AppendLine($"☆--- {Name} ---☆");
|
if (!isSubActivity)
|
||||||
|
{
|
||||||
|
builder.AppendLine($"☆--- {Name} ---☆");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
builder.AppendLine($"==[ {Name} ]==");
|
||||||
|
}
|
||||||
|
|
||||||
builder.AppendLine($"{Description}");
|
builder.AppendLine($"{Description}");
|
||||||
builder.AppendLine($"活动状态:{CommonSet.GetActivityStatus(Status)}");
|
builder.AppendLine($"活动状态:{CommonSet.GetActivityStatus(Status)}");
|
||||||
builder.AppendLine(GetTimeString());
|
builder.AppendLine(GetTimeString(!isSubActivity));
|
||||||
|
|
||||||
if (showQuests && Quests.Count > 0)
|
if (showQuests && Quests.Count > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -7,6 +7,7 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
{
|
{
|
||||||
public string Description { get; set; } = "";
|
public string Description { get; set; } = "";
|
||||||
public QuestState Status { get; set; } = QuestState.NotStarted;
|
public QuestState Status { get; set; } = QuestState.NotStarted;
|
||||||
|
public bool Global { get; set; } = false;
|
||||||
public long CharacterId { get; set; } = 0;
|
public long CharacterId { get; set; } = 0;
|
||||||
public long RegionId { get; set; } = 0;
|
public long RegionId { get; set; } = 0;
|
||||||
public string NeedyExploreCharacterName { get; set; } = "";
|
public string NeedyExploreCharacterName { get; set; } = "";
|
||||||
|
|||||||
@ -32,6 +32,16 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual string BackgroundStory { get; set; } = "";
|
public virtual string BackgroundStory { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物品的分类
|
||||||
|
/// </summary>
|
||||||
|
public virtual string Category { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物品的标签
|
||||||
|
/// </summary>
|
||||||
|
public virtual List<string> Tags { get; set; } = [];
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 物品类型
|
/// 物品类型
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -448,6 +458,7 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
if (itemtype != "") itemtype = $" {itemtype}";
|
if (itemtype != "") itemtype = $" {itemtype}";
|
||||||
|
|
||||||
builder.AppendLine($"{itemquality + itemtype}");
|
builder.AppendLine($"{itemquality + itemtype}");
|
||||||
|
if (!string.IsNullOrWhiteSpace(Category)) builder.AppendLine(Category);
|
||||||
|
|
||||||
if (isShowInStore && Price > 0)
|
if (isShowInStore && Price > 0)
|
||||||
{
|
{
|
||||||
@ -593,6 +604,7 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
if (sellandtrade.Count > 0) builder.AppendLine(string.Join(" ", sellandtrade).Trim());
|
if (sellandtrade.Count > 0) builder.AppendLine(string.Join(" ", sellandtrade).Trim());
|
||||||
if (Description != "") builder.AppendLine($"{Description}");
|
if (Description != "") builder.AppendLine($"{Description}");
|
||||||
if (IsEquipment && Character != null) builder.AppendLine($"装备于:{Character.ToStringWithLevelWithOutUser()}");
|
if (IsEquipment && Character != null) builder.AppendLine($"装备于:{Character.ToStringWithLevelWithOutUser()}");
|
||||||
|
if (Tags.Count > 0) builder.AppendLine($"标签:{string.Join(",", Tags)}");
|
||||||
}
|
}
|
||||||
|
|
||||||
return builder.ToString();
|
return builder.ToString();
|
||||||
|
|||||||
@ -35,6 +35,16 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
|
|||||||
case nameof(Item.BackgroundStory):
|
case nameof(Item.BackgroundStory):
|
||||||
result.BackgroundStory = reader.GetString() ?? "";
|
result.BackgroundStory = reader.GetString() ?? "";
|
||||||
break;
|
break;
|
||||||
|
case nameof(Item.Category):
|
||||||
|
result.Category = reader.GetString() ?? "";
|
||||||
|
break;
|
||||||
|
case nameof(Item.Tags):
|
||||||
|
string[] tags = NetworkUtility.JsonDeserialize<string[]>(ref reader, options) ?? [];
|
||||||
|
foreach (string tag in tags)
|
||||||
|
{
|
||||||
|
result.Tags.Add(tag);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case nameof(Item.ItemType):
|
case nameof(Item.ItemType):
|
||||||
result.ItemType = (ItemType)reader.GetInt32();
|
result.ItemType = (ItemType)reader.GetInt32();
|
||||||
break;
|
break;
|
||||||
@ -129,6 +139,9 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
|
|||||||
writer.WriteString(nameof(Item.Description), value.Description);
|
writer.WriteString(nameof(Item.Description), value.Description);
|
||||||
writer.WriteString(nameof(Item.GeneralDescription), value.GeneralDescription);
|
writer.WriteString(nameof(Item.GeneralDescription), value.GeneralDescription);
|
||||||
writer.WriteString(nameof(Item.BackgroundStory), value.BackgroundStory);
|
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.ItemType), (int)value.ItemType);
|
||||||
writer.WriteNumber(nameof(Item.WeaponType), (int)value.WeaponType);
|
writer.WriteNumber(nameof(Item.WeaponType), (int)value.WeaponType);
|
||||||
writer.WriteNumber(nameof(Item.EquipSlotType), (int)value.EquipSlotType);
|
writer.WriteNumber(nameof(Item.EquipSlotType), (int)value.EquipSlotType);
|
||||||
|
|||||||
@ -32,6 +32,9 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
|
|||||||
case nameof(Quest.Status):
|
case nameof(Quest.Status):
|
||||||
result.Status = (QuestState)reader.GetInt32();
|
result.Status = (QuestState)reader.GetInt32();
|
||||||
break;
|
break;
|
||||||
|
case nameof(Quest.Global):
|
||||||
|
result.Global = reader.GetBoolean();
|
||||||
|
break;
|
||||||
case nameof(Quest.CharacterId):
|
case nameof(Quest.CharacterId):
|
||||||
result.CharacterId = reader.GetInt64();
|
result.CharacterId = reader.GetInt64();
|
||||||
break;
|
break;
|
||||||
@ -109,6 +112,7 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
|
|||||||
writer.WriteString(nameof(Quest.Name), value.Name);
|
writer.WriteString(nameof(Quest.Name), value.Name);
|
||||||
writer.WriteString(nameof(Quest.Description), value.Description);
|
writer.WriteString(nameof(Quest.Description), value.Description);
|
||||||
writer.WriteNumber(nameof(Quest.Status), (int)value.Status);
|
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.CharacterId), value.CharacterId);
|
||||||
writer.WriteNumber(nameof(Quest.RegionId), value.RegionId);
|
writer.WriteNumber(nameof(Quest.RegionId), value.RegionId);
|
||||||
writer.WriteString(nameof(Quest.NeedyExploreCharacterName), value.NeedyExploreCharacterName);
|
writer.WriteString(nameof(Quest.NeedyExploreCharacterName), value.NeedyExploreCharacterName);
|
||||||
|
|||||||
@ -1486,6 +1486,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!decided && (isAI || cancelTimes == 0))
|
||||||
|
{
|
||||||
|
baseTime += 5;
|
||||||
|
type = CharacterActionType.EndTurn;
|
||||||
|
}
|
||||||
|
|
||||||
if (type == CharacterActionType.None)
|
if (type == CharacterActionType.None)
|
||||||
{
|
{
|
||||||
WriteLine($"[ {character} ] 放弃了行动!");
|
WriteLine($"[ {character} ] 放弃了行动!");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user