diff --git a/Assets/Resources/Cards/SPE_004.asset b/Assets/Resources/Cards/SPE_004.asset
index bce586b..fedd815 100644
--- a/Assets/Resources/Cards/SPE_004.asset
+++ b/Assets/Resources/Cards/SPE_004.asset
@@ -11,9 +11,9 @@ MonoBehaviour:
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0e8fda732d224755bad932e3e6111ced, type: 3}
m_Name: SPE_004
- m_EditorClassIdentifier:
+ m_EditorClassIdentifier:
cardIndex: 22
- cardName: "무적의 방화벽"
+ cardName: "\uBB34\uC801\uC758 \uBC29\uD654\uBCBD"
cardNameEng: INVINCIBLE FIREWALL
cardImage: {fileID: 0}
positiveStatType: 0
@@ -23,5 +23,6 @@ MonoBehaviour:
negativeStatValue: 0
cost: 3
coolTime: 0
- summaryDescription: "다음 턴에 받는 모든 공격 피해를 무효화한다."
- description: "방화벽으로 당신을 지킨다."
+ summaryDescription: "\uB2E4\uC74C \uD134\uC5D0 \uBC1B\uB294 \uBAA8\uB4E0 \uACF5\uACA9
+ \uD53C\uD574\uB97C \uBB34\uD6A8\uD654"
+ description: "\uBC29\uD654\uBCBD\uC73C\uB85C \uB2F9\uC2E0\uC744 \uC9C0\uD0A8\uB2E4."
diff --git a/Assets/Resources/Cards/SPE_006.asset b/Assets/Resources/Cards/SPE_006.asset
new file mode 100644
index 0000000..fd3065f
--- /dev/null
+++ b/Assets/Resources/Cards/SPE_006.asset
@@ -0,0 +1,30 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e6622d28d9f7476da7a584ae76bbebf8, type: 3}
+ m_Name: SPE_006
+ m_EditorClassIdentifier:
+ cardIndex: 23
+ cardName: "\uBC14\uC774\uB7EC\uC2A4 \uBC15\uBA78"
+ cardNameEng: VIRUS ERADICATION
+ cardImage: {fileID: 0}
+ positiveStatType: 0
+ negativeStatType: 0
+ cardType: 4
+ positiveStatValue: 0
+ negativeStatValue: 0
+ cost: 3
+ coolTime: 0
+ summaryDescription: "\uBAA8\uB4E0 \uC801\uC5D0\uAC8C \uBC29\uC5B4\uB825\uC744 \uBB34\uC2DC\uD558\uB294
+ \uB370\uBBF8\uC9C0 -10"
+ description: "\uBC14\uC774\uB7EC\uC2A4 \uBC15\uBA78\uC758 \uC758\uC9C0\uB85C \uC804\uC5ED
+ \uACF5\uACA9\uC774 \uB4E4\uC5B4\uAC04\uB2E4."
+ trueDamage: 10
diff --git a/Assets/Resources/Cards/SPE_006.asset.meta b/Assets/Resources/Cards/SPE_006.asset.meta
new file mode 100644
index 0000000..c46fa4d
--- /dev/null
+++ b/Assets/Resources/Cards/SPE_006.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 13b2289f7fb14c4fad67cedaab29ed9e
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes/4.BattleScene/Scripts/Manager/PlayerManager.cs b/Assets/Scenes/4.BattleScene/Scripts/Manager/PlayerManager.cs
index daee337..538cdde 100644
--- a/Assets/Scenes/4.BattleScene/Scripts/Manager/PlayerManager.cs
+++ b/Assets/Scenes/4.BattleScene/Scripts/Manager/PlayerManager.cs
@@ -913,6 +913,9 @@ public void PreparePlayerTurn()
DrawCards(drawCount);
+ // 턴 시작 시 코스트를 최대치로 리필 (전멸 승리로 적 턴을 거치지 않고 다음 전투가 시작되는 경우 포함)
+ currentCost = TotalCost;
+
UpdateUI();
OnHandRefreshed?.Invoke();
}
diff --git a/Assets/Scenes/4.BattleScene/Scripts/UI/CardObject/VirusEradicationCardObject.cs b/Assets/Scenes/4.BattleScene/Scripts/UI/CardObject/VirusEradicationCardObject.cs
new file mode 100644
index 0000000..647f36d
--- /dev/null
+++ b/Assets/Scenes/4.BattleScene/Scripts/UI/CardObject/VirusEradicationCardObject.cs
@@ -0,0 +1,26 @@
+using UnityEngine;
+
+///
+/// SPE_006 바이러스 박멸(VIRUS ERADICATION): 현재 스폰된 모든 적에게 방어력을 무시하는 고정 피해를 입힌다.
+///
+[CreateAssetMenu(fileName = "SPE_006", menuName = "Create Card Data/Special Card Data/Virus Eradication")]
+public class VirusEradicationCardObject : CardObject, ISpecialCardEffect
+{
+ [SerializeField] private int trueDamage = 10;
+
+ public void ApplyEffect(PlayerManager player)
+ {
+ if (VirusSpawn.instance == null) return;
+
+ foreach (Transform slot in VirusSpawn.instance.spawns)
+ {
+ if (slot.childCount == 0) continue;
+
+ Virus virus = slot.GetChild(0).GetComponent();
+ if (virus != null)
+ {
+ virus.ApplyTrueDamage(trueDamage);
+ }
+ }
+ }
+}
diff --git a/Assets/Scenes/4.BattleScene/Scripts/UI/CardObject/VirusEradicationCardObject.cs.meta b/Assets/Scenes/4.BattleScene/Scripts/UI/CardObject/VirusEradicationCardObject.cs.meta
new file mode 100644
index 0000000..22a5a45
--- /dev/null
+++ b/Assets/Scenes/4.BattleScene/Scripts/UI/CardObject/VirusEradicationCardObject.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e6622d28d9f7476da7a584ae76bbebf8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes/4.Enemy/Scripts/EnemyTurnManager.cs b/Assets/Scenes/4.Enemy/Scripts/EnemyTurnManager.cs
index 420295f..88a9c4e 100644
--- a/Assets/Scenes/4.Enemy/Scripts/EnemyTurnManager.cs
+++ b/Assets/Scenes/4.Enemy/Scripts/EnemyTurnManager.cs
@@ -81,9 +81,8 @@ private IEnumerator CoEnemyTurnSequence()
_running = false;
PlayerManager.instance.OnTurnEndProcess(); // 디버프 틱/쿨타임 갱신
- PlayerManager.instance.PreparePlayerTurn();
+ PlayerManager.instance.PreparePlayerTurn(); // 코스트 리필 포함
PlayerManager.instance.ResetTurnDeltaStats();
- PlayerManager.instance.currentCost = PlayerManager.instance.TotalCost;
PlayerManager.instance.UpdateUI();
// 플레이어 턴 시작 이벤트 발행 (보스 패시브 등 구독자에게 알림)
diff --git a/Assets/Scenes/4.Enemy/Scripts/VirusData/Virus.cs b/Assets/Scenes/4.Enemy/Scripts/VirusData/Virus.cs
index 77bbbc8..4f318d2 100644
--- a/Assets/Scenes/4.Enemy/Scripts/VirusData/Virus.cs
+++ b/Assets/Scenes/4.Enemy/Scripts/VirusData/Virus.cs
@@ -317,6 +317,24 @@ public virtual int ApplyDamage(int damage)
return remaining;
}
+
+ // 방어력을 무시하고 체력만 직접 감소시키는 고정 피해 (바이러스 박멸 등)
+ public virtual void ApplyTrueDamage(int damage)
+ {
+ if (virusData.CurHpCnt > 0)
+ {
+ virusData.CurHpCnt = Mathf.Max(0, virusData.CurHpCnt - damage);
+ }
+
+ UpdateData();
+
+ Debug.Log($"[Enemy] 방어 무시 피해: {damage}, 현재 체력: {virusData.CurHpCnt}");
+
+ if (virusData.CurHpCnt <= 0)
+ {
+ OnDeath();
+ }
+ }
// ���� ó���� ����ϴ� �Լ� �߰�
protected virtual void OnDeath()
{