public static void AttackEnemy(GameObject player, GameObject enemy, Dictionary <GameObject, List <Element> > whichElementReachEnemy) { Player playerStatus = player.gameObject.GetComponent <Player>(); Enemy enemyStatus = enemy.gameObject.GetComponent <Enemy>(); Damage elementDamage = CheckElement(playerStatus.element, enemyStatus.element); float elementWeight = 1.0f; ChainWeight chainDamage = CheckChainCount(player, enemy, whichElementReachEnemy); float chainWeight = 1.0f; Skill skill; if (playerStatus.characterName == Player.CharacterName.Roserian) { if (elementDamage.damageAdd) { skill = new EnhanceWeakpoint(); if (skill.activated) { elementWeight = elementDamage.damageWeight + skill.GetWeightedValue(); } } else if (elementDamage.damageLoss) { skill = new BreakWeakpoint(); if (skill.activated) { elementWeight = elementDamage.damageWeight + skill.GetWeightedValue(); } } if (chainDamage.chainActive) { skill = new EnhanceChain(); if (skill.activated) { chainWeight = chainDamage.chainWeight + skill.GetWeightedValue(); } } else if (!chainDamage.chainActive) { skill = new BreakChain(); if (skill.activated) { chainWeight = chainDamage.chainWeight + skill.GetWeightedValue(); } } } if (playerStatus.characterName == Player.CharacterName.Hesmen) { if (chainDamage.chainActive) { skill = new Weaken(); if (skill.activated) { skill.Use(enemyStatus); } } skill = new HpAbsorption(); if (skill.activated) { skill.Use(playerStatus); } } enemyStatus.hp -= (int)(playerStatus.atk * elementWeight * chainWeight); }
public static ChainWeight CheckChainCount(GameObject player, GameObject enemy, Dictionary <GameObject, List <Element> > whichElementReachEnemy) { List <Element> playerElementList; if (whichElementReachEnemy.ContainsKey(enemy)) { playerElementList = whichElementReachEnemy[enemy]; } else { playerElementList = new List <Element>(); } int chainCount = 0; Player playerStatus = player.gameObject.GetComponent <Player>(); Enemy enemyStatus = enemy.gameObject.GetComponent <Enemy>(); if (playerStatus.element == Element.Water) { if (playerElementList.Contains(Element.Wood)) { chainCount++; if (playerElementList.Contains(Element.Fire)) { chainCount++; if (playerElementList.Contains(Element.Earth)) { chainCount++; if (playerElementList.Contains(Element.Metal)) { chainCount++; } } } } if (playerElementList.Contains(Element.Metal)) { chainCount++; if (playerElementList.Contains(Element.Earth)) { chainCount++; if (playerElementList.Contains(Element.Fire)) { chainCount++; if (playerElementList.Contains(Element.Wood)) { chainCount++; } } } } } else if (playerStatus.element == Element.Wood) { if (playerElementList.Contains(Element.Fire)) { chainCount++; if (playerElementList.Contains(Element.Earth)) { chainCount++; if (playerElementList.Contains(Element.Metal)) { chainCount++; if (playerElementList.Contains(Element.Water)) { chainCount++; } } } } if (playerElementList.Contains(Element.Water)) { chainCount++; if (playerElementList.Contains(Element.Metal)) { chainCount++; if (playerElementList.Contains(Element.Earth)) { chainCount++; if (playerElementList.Contains(Element.Fire)) { chainCount++; } } } } } else if (playerStatus.element == Element.Fire) { if (playerElementList.Contains(Element.Earth)) { chainCount++; if (playerElementList.Contains(Element.Metal)) { chainCount++; if (playerElementList.Contains(Element.Water)) { chainCount++; if (playerElementList.Contains(Element.Wood)) { chainCount++; } } } } if (playerElementList.Contains(Element.Wood)) { chainCount++; if (playerElementList.Contains(Element.Water)) { chainCount++; if (playerElementList.Contains(Element.Metal)) { chainCount++; if (playerElementList.Contains(Element.Earth)) { chainCount++; } } } } } else if (playerStatus.element == Element.Earth) { if (playerElementList.Contains(Element.Metal)) { chainCount++; if (playerElementList.Contains(Element.Water)) { chainCount++; if (playerElementList.Contains(Element.Wood)) { chainCount++; if (playerElementList.Contains(Element.Fire)) { chainCount++; } } } } if (playerElementList.Contains(Element.Fire)) { chainCount++; if (playerElementList.Contains(Element.Wood)) { chainCount++; if (playerElementList.Contains(Element.Water)) { chainCount++; if (playerElementList.Contains(Element.Metal)) { chainCount++; } } } } } else if (playerStatus.element == Element.Metal) { if (playerElementList.Contains(Element.Water)) { chainCount++; if (playerElementList.Contains(Element.Wood)) { chainCount++; if (playerElementList.Contains(Element.Fire)) { chainCount++; if (playerElementList.Contains(Element.Earth)) { chainCount++; } } } } if (playerElementList.Contains(Element.Earth)) { chainCount++; if (playerElementList.Contains(Element.Fire)) { chainCount++; if (playerElementList.Contains(Element.Wood)) { chainCount++; if (playerElementList.Contains(Element.Water)) { chainCount++; } } } } } ChainWeight chainWeight = new ChainWeight(); if (chainCount > 4) { chainCount = 4; } if (chainCount == 0) { chainWeight.chainActive = false; } else if (chainCount == 1) { chainWeight.chainWeight = 1.5f; } else if (chainCount == 2) { chainWeight.chainWeight = 2.25f; } else if (chainCount == 3) { chainWeight.chainWeight = 3.375f; } else if (chainCount == 4) { chainWeight.chainWeight = 5.0625f; } return(chainWeight); }