예제 #1
0
    public void Show()
    {
        if (CombatPlayer.isDead)
        {
            return;
        }

        if (PortalCooldown < 1)
        {
            return;
        }

        SoundsManager.PlayClip(PortalSound);

        TownPortalsUsed++;

        PauseManager.isPaused = true;
        PortalCooldown        = 0;
        PortalCooldownTime   += 10f;// + (Difficulty.DiffLevel * 5);

        combatQueue.LeaveDungeon();
        GameObject.FindObjectOfType <LootArea>().ClearLoot();

        itemNameTxt.text = "";
        statGainTxt.text = "";

        DoSale();

        this.transform.SetAsLastSibling();

        StatManager.Instance.HealPlayer();

        // Slide In
        desiredPosition = new Vector2(0, 0);
    }
예제 #2
0
    public void Hide()
    {
        PauseManager.isPaused = false;

        combatQueue.ReturnFromTown();

        SoundsManager.PlayClip(WalkSound);

        // Slide Out

        desiredPosition = new Vector2(1280, 0);
    }
예제 #3
0
    void DoAttack()
    {
        CombatEnemy enemy = combatQueue.FirstEnemy();

        if (enemy == null)
        {
            return;
        }

        int hitSkill = (int)statManager.DerivedPrecision();

        if (Random.Range(0, hitSkill) < Random.Range(0, enemy.Dodge()))
        {
            CombatBubbleSpawner.SpawnBubble(
                enemy.transform.position,
                "Missed!",
                CombatBubbleSpawner.BubbleTypes.Round,
                Color.gray
                );

            SoundsManager.PlayClip(MissSounds[Random.Range(0, MissSounds.Length)]);

            return;
        }

        int maxDamage = (int)statManager.DerivedDamage();

        int damage = Random.Range(maxDamage / 2, maxDamage);

        bool isCrit = Random.Range(0, 100) < statManager.GetValue(Stats.Critical);

        if (isCrit)
        {
            // TODO: Crit event
            damage *= 2;
        }

        CombatBubbleSpawner.SpawnBubble(
            enemy.transform.position,
            damage.ToString(),
            (isCrit ? CombatBubbleSpawner.BubbleTypes.Spiky : CombatBubbleSpawner.BubbleTypes.Round),
            (isCrit ? Color.red : Color.white)
            );

        SoundsManager.PlayClip(AttackSounds[Random.Range(0, AttackSounds.Length)]);

        enemy.TakeDamage(damage);
    }
예제 #4
0
    void Die()
    {
        isDead = true;

        GameOverText.SetActive(true);
        GameOverText.transform.SetAsLastSibling();

        SoundsManager.PlayClip(DeathSounds[Random.Range(0, DeathSounds.Length)]);

        GetComponent <RectTransform>().rotation = Quaternion.Euler(0, 0, -90);
        GetComponent <RectTransform>().position =
            GetComponent <RectTransform>().position +
            new Vector3(
                GetComponent <RectTransform>().sizeDelta.x + 25,
                -25) * GetComponentInParent <Canvas>().scaleFactor;
    }
예제 #5
0
    public void TakeDamage(int amount, DamageType dtype)
    {
        int mitigation = 0;

        switch (dtype)
        {
        case DamageType.Physical:
            mitigation = Random.Range(0, (int)statManager.GetValue(Stats.Armor));
            break;

        case DamageType.Fire:
            mitigation = Random.Range(0, (int)statManager.DerivedResFire());
            break;

        case DamageType.Electrical:
            mitigation = Random.Range(0, (int)statManager.DerivedResElec());
            break;

        case DamageType.Cold:
            mitigation = Random.Range(0, (int)statManager.DerivedResCold());
            break;

        default:
            break;
        }

        mitigation = Mathf.FloorToInt(Mathf.Min(amount * 0.75f, mitigation));

        int actualDamage = amount - mitigation;

        statManager.ChangeValue(Stats.CurrentHP, -(actualDamage));

        Color c = Color.white;

        switch (dtype)
        {
        case DamageType.Physical:
            c = Color.grey;
            break;

        case DamageType.Fire:
            c = Color.red;
            break;

        case DamageType.Electrical:
            c = Color.yellow;
            break;

        case DamageType.Cold:
            c = Color.blue;
            break;

        default:
            break;
        }

        if (actualDamage > 0)
        {
            SoundsManager.PlayClip(HurtSounds[Random.Range(0, HurtSounds.Length)]);
        }

        CombatBubbleSpawner.SpawnBubble(
            this.transform.position,
            "-" + actualDamage,
            CombatBubbleSpawner.BubbleTypes.Round,
            c
            );
    }