多轮审查和修复

This commit is contained in:
2026-05-12 15:34:08 +08:00
parent f55d2a57c3
commit ebbbb7332e
805 changed files with 838724 additions and 1905 deletions

View File

@@ -0,0 +1,29 @@
using UnityEngine;
using BaseGames.Core.Save;
namespace BaseGames.Progression
{
/// <summary>
/// 无治疗通关成就条件。
/// 依赖 World.Switches 中的标志位AchievementManager 在玩家治疗时写入 noHeal_failed=true。
/// 满足条件Boss 已击败 且 无治疗标志未被置入失败状态。
/// </summary>
[CreateAssetMenu(menuName = "Achievement/Condition/NoHealRun", fileName = "COND_NoHealRun_")]
public class NoHealRunCondition : AchievementCondition
{
[Tooltip("追踪的 Boss ID击败此 Boss 时检查是否治疗过)")]
public string targetBossId;
[Tooltip("Switches 中记录「已治疗」失败状态的 Key由 AchievementManager 设置)")]
public string healFailFlagKey;
public override bool IsMet(SaveData save)
{
if (save?.World == null) return false;
// Boss 已击败 且 未触发治疗失败标志
bool bossDefeated = save.World.DefeatedBossIds.Contains(targetBossId);
bool didHeal = save.World.Switches.TryGetValue(healFailFlagKey, out bool val) && val;
return bossDefeated && !didHeal;
}
}
}