Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    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);
    }