public static float Get_Damage(Card card, UI_Parent player, CARD_TYPE enemyType) { float damage = 0f; CARD_TYPE myType = card._cardType; BATTLE_RESULT result = Get_BattleResult(myType, enemyType); // Character float AD = player._ad; float TC = ParserManager.TC[(int)myType][(int)result]; float TE = (card._bEnhanced) ? ParserManager.TE[(int)myType] : 1f; // Item float AP = 0f; // Stage float FC = (Singleton.inGameManager._attribute == myType) ? ParserManager.FC : 1f; float QC = ParserManager.QC[Singleton.inGameManager._quarter]; damage = (AD + AP) * TC * TE * FC * QC; damage = Mathf.Round(damage); // Log LogManager.Log("Type Counter : " + TC + " Type Enhanced : " + TE + " Field Control : " + FC + " Quarter Control : " + QC + " Total Damage : " + damage); return(damage); }
public static BATTLE_RESULT Get_BattleResult(CARD_TYPE myType, CARD_TYPE enemyType) { BATTLE_RESULT result = BATTLE_RESULT.END; if (myType == CARD_TYPE.ATTACK) { if (enemyType == CARD_TYPE.ATTACK) { result = BATTLE_RESULT.DRAW; } else if (enemyType == CARD_TYPE.DEFEND) { result = BATTLE_RESULT.LOSE; } else if (enemyType == CARD_TYPE.HEAL) { result = BATTLE_RESULT.WIN; } } else if (myType == CARD_TYPE.DEFEND) { if (enemyType == CARD_TYPE.ATTACK) { result = BATTLE_RESULT.WIN; } else if (enemyType == CARD_TYPE.DEFEND) { result = BATTLE_RESULT.DRAW; } else if (enemyType == CARD_TYPE.HEAL) { result = BATTLE_RESULT.LOSE; } } else if (myType == CARD_TYPE.HEAL) { if (enemyType == CARD_TYPE.ATTACK) { result = BATTLE_RESULT.LOSE; } else if (enemyType == CARD_TYPE.DEFEND) { result = BATTLE_RESULT.WIN; } else if (enemyType == CARD_TYPE.HEAL) { result = BATTLE_RESULT.DRAW; } } return(result); }
IEnumerator Play_Anim(BATTLE_RESULT result) { // 달려가기 StartCoroutine(_myPlayer.PlayAnim("At_Dr_Ready")); yield return(StartCoroutine(_enemyPlayer.PlayAnim("At_Dr_Ready"))); // 이펙트 yield return(StartCoroutine(_effectAttack.Play_Anim("Ef_Attack_01"))); // 카드 오픈 StartCoroutine(_uiPlayer._SelectCardView.PlayAnim("Open")); yield return(StartCoroutine(_uiEnemy._SelectCardView.PlayAnim("Open"))); // 캐릭터 뒤로가기 if (result == BATTLE_RESULT.WIN) { StartCoroutine(_myPlayer.PlayAnim("At_Result_Win_1")); StartCoroutine(_enemyPlayer.PlayAnim("At_Result_Lose")); } else if (result == BATTLE_RESULT.DRAW) { StartCoroutine(_myPlayer.PlayAnim("At_Dr_Back")); StartCoroutine(_enemyPlayer.PlayAnim("At_Dr_Back")); } else if (result == BATTLE_RESULT.LOSE) { StartCoroutine(_myPlayer.PlayAnim("At_Result_Lose")); StartCoroutine(_enemyPlayer.PlayAnim("At_Result_Win_1")); } // 깎일 데미지 StartCoroutine(_uiPlayer.PlayDamagedAnim("Damaged_Count")); yield return(StartCoroutine(_uiEnemy.PlayDamagedAnim("Damaged_Count"))); // 체력 감소 StartCoroutine(_uiPlayer.PlayHpAnim()); StartCoroutine(_uiEnemy.PlayHpAnim()); yield return(new WaitUntil(() => (_uiPlayer._hpDamaged == 0) && (_uiEnemy._hpDamaged == 0))); if ((_uiPlayer._hp <= 0f && _uiEnemy._hp <= 0f)) // 듀스 { if (!_bDuece) { (Singleton.popUpManager.Get_PopUp("SystemMessage") as SystemMessage).ShowMessage("듀스", 0.5f, false); } StartCoroutine(PlayDeuce()); } else if (_uiPlayer._hp <= 0f) { (Singleton.popUpManager.Get_PopUp("SystemMessage") as SystemMessage).ShowMessage("LOSE", 1f, true); Singleton.popUpManager.Get_PopUp("SystemMessage").SetCallBackFunc(gameObject, "GoToMain"); } else if (_uiEnemy._hp <= 0f) { (Singleton.popUpManager.Get_PopUp("SystemMessage") as SystemMessage).ShowMessage("WIN", 1f, true); Singleton.popUpManager.Get_PopUp("SystemMessage").SetCallBackFunc(gameObject, "GoToMain"); } else { if (_bDuece) { StartCoroutine(PlayDeuce()); } else { AnimFinish(); } } yield return(null); }