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() {